2013-01-03 11 views
7

Wenn Sie einen Zweig, die Sie aus dem Master-gegabelt und entwickelten dann Funktion in ihm ..., wenn es wieder in Master zu verschmelzenden kommt, ich habe zwei verschiedene Ansätze gehört:Git Merging verzweigen Meister

  1. Zuerst den Master in den Feature-Zweig einbinden und dann den Zweig zurück in den Master zusammenführen.
  2. Fügen Sie Ihren Zweig in den Master ein.

Kann mir jemand sagen, welche Methode besser ist und ob es einen tatsächlichen Nutzen für die erste gibt?

Oder wenn es eine bessere Methode gibt?

Antwort

2

die Sie Feature-sev vom Master, und in der Zwischenzeit, ich schaffe feature-eric Lassen Sie sagen, erstellen. Mein Zweig ändert dieselbe Datei wie Ihre; Tatsächlich überlappt es sich auf eine Weise, die unser Git Client nicht schlau genug ist zu verstehen. Ich beende die Entwicklung zuerst und füge meine Änderungen ein.

In dieser Situation werden Sie zwangsläufig aufgefordert, den Konflikt zu lösen.

CONFLICT (content): Merge conflict in stackoverflow.html 
Automatic merge failed; fix conflicts and then commit the result. 

Wenn Sie mit gehen (1), Master in die Zweig Zusammenführung und sicherstellen, dass alles gut aussieht, dann lösen Sie den Konflikt über eine Zusammenführung in Feature-sev begehen. Wenn Sie während der Bearbeitung Fehler machen, können Sie diese ohne direkte Änderungen am Master zurückrollen. Das ist gut.

Wenn Sie mit (2) gegangen sind, lösen Sie den Konflikt über ein Merge-Commit, das direkt an den Master übergeben wird. Wenn du Fehler machst, brichst du den Meister. Das ist schlecht.

1

Ich denke, es ;-)

einige Dinge zu beachten, hängt:

  • Sie benötigen die Funktion Zweig mehr die nach dem Zusammenführen? Wenn dies der Fall ist, kann es nützlich sein, master hinein zu verschmelzen und zurück zu master zu fusionieren. Wenn nicht, macht es nicht viel Sinn, mit dem Feature-Zweig zu verschmelzen, wenn Sie es trotzdem löschen wollen.
  • Ist es in Ordnung für Sie, Ihre lokale Arbeitskopie des master Zweigs zu knacken? Wenn nicht, sollten Sie vermeiden, Code in master zusammenzuführen, was zu vielen Konflikten führen kann, die Sie manuell lösen müssen. Wenn es in Ordnung ist, fahren Sie fort.

Im Allgemeinen würde ich sagen, es hängt davon ab, wie Sie mit Git arbeiten.

Da ich Feature Branches in der Regel nur temporär nutze und sie nach erfolgreichem Beenden eines Features lösche und sie in master zusammengeführt habe, fusioniere ich normalerweise direkt in master und lösche anschließend den anderen Zweig.

Auf der anderen Seite kann ich mir vorstellen, dass es kann Situationen sein, in denen es nützlich sein kann, es umgekehrt zu tun. Aber solange es keine guten Gründe gibt, würde ich versuchen, es zu vermeiden. Eine Zusammenführung ist genug ;-).

1

Theoretisch gibt es keinen Unterschied. Sie haben eine Reihe von Änderungen in einem Zweig, die Sie mit einer Reihe von Änderungen in einem anderen Zweig kombinieren. Es spielt keine Rolle, wo diese Änderungen landen.

In der Praxis ist es besser, Änderungen in den Feature-Zweig zu integrieren, da Sie dadurch einen isolierten Ort zum Lösen von Konflikten erhalten. Dies ist besonders wichtig, wenn der Feature-Zweig lange Zeit entwickelt wurde, da es oft subtile Konflikte gibt, die nach dem ersten Commit aufgelöst werden.

Der beste Ansatz besteht darin, regelmäßige Aktualisierungen vom Master- zum Feature-Zweig vorzunehmen, wodurch die Wahrscheinlichkeit von Konflikten am Ende der Feature-Entwicklung reduziert wird.