2009-11-15 2 views
15

Ich habe ein kleines Projekt auf Git, auf dem ich der einzige Entwickler bin. Für den Moment habe ich nur einen Hauptzweig benutzt, um es wirklich zum Laufen zu bringen.Ist es sinnvoll, Verzweigungen mit einem Ein-Mann-Git-Projekt zu verwenden?

Jetzt funktioniert das Projekt irgendwie und ich möchte nur einige neue Funktionen implementieren. Die Frage ist, sollte ich für jedes neue Feature eine neue Verzweigung erstellen und diese anschließend wieder zusammenführen?

Tatsache ist, dass mein Workflow nur den "Feature Branch" verbessert und ihn meistens wieder in den unveränderten "Master Branch" zusammenfasst. Macht es also Sinn, überhaupt neue Branches zu erstellen?

Antwort

19

Vom gitworkflows Manpage:

Jede nicht-triviale Funktion wird mehrere Patches erfordern, zu implementieren und zusätzliche Fehlerbehebungen und Verbesserungen bekommen kann während seiner Lebensdauer.

Begehen alles direkt auf die Integration Filialen führt zu vielen Probleme: Bad Commits nicht rückgängig gemacht werden können, so müssen sie eine durch ein rückgängig gemacht werden, die verwirrend Geschichten und weitere Fehlerpotential erzeugt, wenn Sie zurückkommen vergessen Teil einer Gruppe von Änderungen. Parallel arbeiten verwirrte die Änderungen, weitere Verwirrung zu schaffen.

Die Verwendung von "Zweig Zweige" löst diese Probleme.

Sie sollten Themenzweige (auch Feature-Zweige genannt) verwenden, selbst wenn Sie der einzige Entwickler sind.

Zusätzlich zu den oben genannten Gründen, würde ich hinzufügen:

  • Wenn Sie eine Funktion, die Ihnen die Arbeit an diesem Feature leicht zu suspendieren ermöglichen eine lange Zeit in Anspruch, arbeitet an einem Feature Zweig nehmen an etwas anderem arbeiten.
  • Wenn es eine Chance gibt, dass Sie mehrere Versionen Ihres Codes unterstützen müssen (dh Ihre aktuelle Version ist v2.0, aber ein Kunde/Benutzer verwendet v1.0, dann können Sie mithilfe von Zweigstellen problemlos Bugfixes zusammenführen mehrere Versionen.
0

Faustregel: Wenn Sie das Produkt während der Entwicklung brechen, verzweigen Sie. Gehen Sie einfach davon aus, dass Sie einen Fehler im Stamm finden und beheben möchten.

0

Es macht Sinn, solange es Ihnen hilft.
Ich benutze SVN für meine persönlichen Projekte und manchmal, wenn ich eine neue Funktion erforschen oder viel Code wegwerfen möchte, verzweifle ich gerne von meinem Hauptzweig.

So kann ich an der neuen Funktionalität für eine lange Zeit arbeiten (lesen: mehr als ein Commit), wenn ich scheitere, kann ich immer zurück zum Hauptzweig und wenn ich erfolgreich bin, kann ich den gesamten Zweig oder zusammenführen nur die Änderungen, die Sinn machen.

2

Ich würde sagen, es ist wahrscheinlich persönliche Vorliebe, aber auf einige der Soloprojekte, die ich arbeite, ist es manchmal nützlich, zumindest eine Verzweigung für die neue Arbeit zu erstellen, den Master-Zweig zur Fehlerbehebung zu lassen. Ich befinde mich mitten in der Arbeit an etwas Neuem, wenn jemand einen Fehler zur bestehenden Version meldet. In dieser Situation kann ich den neuen Code leicht ablegen und den Fehler im Master-Zweig beheben und dann zu den Dingen zurückkehren, an denen ich gerade arbeitete. Dann füge sie am Ende zusammen.

Ich verzweifle jedoch normalerweise nicht für jede neue Funktion. Normalerweise arbeite ich nicht gleichzeitig an mehreren Funktionen ... nur hin und wieder. In diesem Fall hängt es davon ab, wie stark sich die beiden Features Dateiweise überlappen, sodass ich wieder verzweigen würde.

3

Ich würde ja sagen, für mich jedes Mal, wenn ich Code in die Produktionsumgebung pushen werde ich einen Versionszweig erstellen. Wenn also etwas schief geht, kann ich einfach zu dieser Verzweigung zurückkehren und die Fehlerbehebung veranlassen, das Problem zu beheben und dann meinen Codewechsel wieder in den Stamm zu integrieren.

+5

Ich folge auch grob diesem Workflow, aber ich markiere freigegebene Versionen zunächst, anstatt einen Zweig zu erstellen. Dann mache ich einen Zweig von diesem Tag, wenn ich es brauche; Meistens muss ich das aber nicht, also halte ich sie als Tags, damit mein Filialnamensraum nicht überladen wird. –

+0

Guter Punkt, Meine Veröffentlichungen waren selten und so habe ich nicht wirklich lange überlegt. Tags klingt nach einem viel saubereren Weg vorwärts zu gehen. Vielen Dank! – Anthony

8

sollte ich schaffen neue Zweig für jede neue Funktion und Zusammenführung zurück danach?

Ja, denn auf halbem Weg durch dieses Feature Implementierung Sie eine show-stopping Fehler in Ihrem Produktionscode finden, und Sie werden dankbar sein, dass Sie zurück zum Code git checkout master können, die in der Produktion und beheben. Meine Regel besteht darin, meine Master-Verzweigung immer in einem bereitstellbaren Zustand zu haben.

2

ich ja sage Feature Verzweigungen, auch während einer trivialen 1 Person Projekt ohne Kunden.

der Grund ist, Workflow. Wenn Sie einen einzelnen Workflow verwenden, die Sie anwenden können, über alle Projekte, in die man involviert ist, dann gibt es weniger falsch zu entscheiden und weniger Entscheidungen zu treffen und es macht das Leben einfacher, wenn dein "triviales" Projekt plötzlich ein Eigenleben entwickelt :-).

(Ein einzelner Workflow ist ein ideales natürlich, aber alles, was ... hilft)

2

Hinzufügen zu dem, was andere gesagt haben: Zweige sind so einfach in git erstellen & halten, warum nicht einen Zweig machen? Selbst wenn Sie nie einen Bugfix/ein Update auf dem alten Zweig machen müssen, werden Sie noch einige zusätzliche Metadaten über Ihre Codebasis über die Zweigstellen erhalten, die Sie in einem Jahr gerne haben werden.

Ich bin ein großer Fan von allen Arten von Feature-Zweigen, aus zwei Gründen: Erstens können Sie Ihren Workflow so strukturieren, dass der Master-Zweig immer bereit ist zu versenden (was ziemlich cool ist) und zweitens, sobald Sie Habe etwas Geschichte mit einer Reihe von Feature-Branches und so, guck oder qgit auf den Baum zu schauen gibt dir ein wirklich cooles High-Level-Feeling für die Geschichte der Codebasis, die eine einzelne Zeile nicht würde.

Verwandte Themen