Zunächst einmal bin ich mir bewusst, dass viele Fragen zu VCS als Solo-Entwickler gestellt wurden, aber sie sind oft zu weit gefasst. Dies betrifft nur die Verzweigung und wurde dennoch als Duplikat markiert ... Das vermeintliche Duplikat wird wiederum als ein weiteres Duplikat einer anderen Frage markiert, die zu weit gefasst ist und sich nicht speziell auf die Verzweigung bezieht. So ist meine Frage einzigartig.
Welche Vorteile hat es, wenn Sie als Solo-Entwickler Branching einsetzen? Ich habe oft gesehen, dass es sogar in einem Solo-Entwickler-Kontext empfohlen wird, aber soweit ich sehen kann, sehe ich nicht, wie, abgesehen von der Verwendung eines 'Master'-Trunks für die Entwicklung und dem Verzweigen für funktionierenden, release-fähigen Code Ich könnte die Macht der Verzweigung nutzen (zum Beispiel, um neue Funktionen zu unterteilen), ohne den gesamten Entwicklungsprozess zu komplizieren.
quelle
Antworten:
Die Vorteile sind meist die gleichen wie für Entwicklergruppen. Wenn Sie einen Master-Zweig verwenden, der immer für die Freigabe bereit ist, und Feature-Zweige zum Entwickeln neuer Features, können Sie den Master jederzeit freigeben. Finden Sie einen wichtigen Fehler, während Sie an einer Funktion arbeiten? Zweig wechseln, reparieren, loslassen, zurückschalten und weiterentwickeln.
Oder vielleicht ist dies ein Hobbyprojekt und Sie möchten einfach ein bisschen an dieser und jener Funktion arbeiten können, wie es Ihnen die Stimmung einfällt. Sie emulieren im Grunde genommen ein Team aus mehreren Personen, indem Sie die Zeit abschneiden.
Die implizite Verzweigung, die DVCSs auf Klonen ausführen, bedeutet, dass es bei formalen Verzweigungen im autorisierenden Repository weniger darum geht, Personen zu koordinieren, sondern vielmehr darum, Entwicklungsrichtungen zu koordinieren, und sogar eine einzelne Person kann mehrere dieser Verzweigungen ausführen.
quelle
Langjährige Entwicklung
Das Verzweigen für ein Team mit nur einer Person wäre nützlich für eine langfristige Entwicklungsfunktion, die ansonsten nicht in Ihren Release-Zyklus passt.
Sie können einen Zweig für Ihre mehrmonatige Änderung übernehmen und dennoch in regelmäßigen Abständen die alltäglichen Fehlerbehebungen oder Änderungen in Ihrem Hauptzweig vornehmen.
Dies hat gegenüber "Switches" in einem einzelnen Zweig den Vorteil, dass sich Ihr Hauptzweig immer in einem bereitstellbaren Zustand befindet und Sie garantiert sind, dass sich nichts in der langfristigen Funktion auf anderen, zuvor getesteten Code ausgewirkt hat.
Experimentelle Funktionen
Eine Verzweigung kann auch für Features nützlich sein, für die Sie möglicherweise Prototypen erstellen möchten, die es jedoch möglicherweise nie in Ihren implementierten Code schaffen. Wenn Sie diese in einem Zweig vervollständigen, der letztendlich weggeworfen wird, wird Ihre Hauptcodebasis nie unnötig verschmutzt.
quelle
Ich benutze es für wichtige Website-Wartung. Ich bin der einzige Entwickler, aber ich habe einen Meister, entwickle und stelle Zweige aus.
Mein Arbeitsprozess für die Site-Einrichtung sieht folgendermaßen aus:
Mach den Master-Zweig funktionsfähig. Erstes Commit durchführen.
Kasse entwickeln Zweig. Tun Sie nichts, entwickeln Sie Funktionen als Testpuffer für das Zusammenführen mit dem Master.
Checkout Issue Branch. Codieren Sie Ihr Problem, wenn es fertig ist, ziehen Sie es in die Entwicklung, prüfen Sie, ob Probleme auftreten, führen Sie Konflikte zusammen usw. ... beheben Sie diese.
Wenn genügend Probleme für eine Veröffentlichung in "Develop" zusammengeführt wurden und "Develop" auf Stabilität getestet wurde, ziehen Sie "Develop" in "Master".
Auf diese Weise erhalten Sie eine vollständige Testsammlung in Develop, in der Sie Stabilität, Probleme usw. testen können, ohne das Risiko einzugehen, den Master zu verletzen, und Commits zurückzusetzen, wenn sie schädlich sind.
Indem Sie einzelne Filialen für das Festschreiben verwenden, können Sie die bereits geleistete Arbeit "verlassen", mit etwas anderem neu beginnen, um ein dringenderes Problem zu beheben, und das Problem früher ausrollen.
Im wirklichen Leben habe ich normalerweise einen Ausgabezweig und ziehe diesen in Entwicklung und dann in Master. Manchmal ist es langweilig, aber mindestens alle zwei Monate muss ich die Arbeit auf den Kopf stellen, weil jemand die Idee hatte, dass ich RightNow ™ machen muss, und auf diese Weise kann ich schnell wieder in einen Grundzustand zurückkehren, um das Ding zu machen und dann weiter wo ich war. Gerade bei großen Projekten, die mehrere Wochen dauern, ist dies ein Glücksfall, dass ich schnell die Filiale wechseln kann.
Betrachten Sie dieses Szenario: Sie immer auf einem Hauptzweig arbeiten , und Sie haben AwesomeCodeThing ™ in den Werken , die Ihre Master - Zweig - Blätter in einer offenen Herzoperation und ein YugeBug ™ erscheint , dass dringende Fixierung benötigt sonst Tausende von Benutzern werden Ihnen beschweren sich über BigProblems ™
Der Nur so können Sie Ihr Problem in einem solchen Szenario schnell lösen.
Wenn Sie Zweige verwenden:
quelle
Verzweigungen erleichtern das gleichzeitige Bearbeiten mehrerer Features. Dies kann hilfreich sein, wenn sich die Prioritäten im Verlauf eines Projekts ändern.
Angenommen, Sie entscheiden, dass eine Funktion jetzt wichtiger ist. Vielleicht müssen Sie dringend einen kritischen Fehler in einem Live-System beheben. Möglicherweise arbeiten Sie über einen längeren Zeitraum mit einem Client an mehreren Features und möchten den Fortschritt der einzelnen Features separat demonstrieren. Vielleicht haben Sie gerade von einem fiesen Zero-Day-Exploit gelesen und möchten darauf zugreifen, bevor der Client davon liest.
Wenn Sie für jede Funktion / jeden Hotfix Verzweigungen verwenden, ist es in der Regel einfacher, sauberer und schneller, diese Änderungen zu isolieren und bereitzustellen, als für alle Funktionen eine einzige Verzweigung zu verwenden. Dies gilt unabhängig davon, ob Sie alleiniger Entwickler oder Teil eines Teams sind.
Was einen tatsächlichen Prozess angeht, finde ich, dass Git Flow gut funktioniert. Daniel Kummers Git Flow-Spickzettel ist eine großartige Ressource. Es lohnt sich, sie sich anzuschauen, auch wenn Sie kein Git verwenden.
quelle
Wie bereits von anderen Postern erwähnt, ähneln die Vorteile im Wesentlichen der Arbeit in Teams: Die Fähigkeit, Features unabhängig zu entwickeln und zu testen, einen separaten Hauptzweig für Hotfixes / Produktionsbereitstellungen zu unterhalten und zu experimentieren.
Für mich persönlich neige ich im Allgemeinen dazu, im Master zu arbeiten, wenn ich den Bereich, in dem ich arbeite, sehr gut kenne. Das erhöht nur den Aufwand für die Verzweigung, da ich sie sowieso nur zusammenführe.
Allerdings , wenn ich jedes Zögern über die Änderungen , die ich mache mir werde verzweigen und nur PR / fusionieren , wenn der Zweig wie erwartet verhält und wird in der Regel vollständig getestet. Auf diese Weise kann ich mich nicht mehr an die Syntax für das Zurücksetzen einer Reihe von Commits erinnern, sondern daran, dass ein Rollback die beste Vorgehensweise ist.
quelle