Neubasis

Neubasis

Ich habe eine neue Funktion in einem neuen Zweig entwickelt und nebenbei einige Änderungen in meinem Master-Zweig vorgenommen.

Ist es möglich, den Master-Zweig in meinen neuen Zweig zu integrieren, um ihn auf dem neuesten Stand zu halten, sodass ich nach Fertigstellung der neuen Funktion nicht zu viele Integrationskonflikte habe?

Antwort1

Du kannst entwedergit merge masterodergit rebase master.

Wenn der Zweig nicht an andere Personen verteilt wurde, würde ich in diesem Fall bevorzugengit rebase.

Denn dadurch git rebasewird es so gemacht, als ob die Änderungen am Feature-Branch zusätzlich zu den Änderungen am Master-Branch vorgenommen würden, was das Versionsdiagramm einfacher macht.

Neubasis

Am Beispiel derGit-Rebase-Handbuch, git rebase masterin der Branche feature:

      A---B---C feature                             A'--B'--C' feature
     /                   --rebase-->               /
D---E---F---G master                  D---E---F---G master

Ist jedoch git rebasenur geeignet, wenn niemand sonst daran arbeitet, da sonst Verwirrung entsteht und zusätzliche Arbeit entsteht, weil die alten Commits A, B, C jetzt durch die neuen Commits A', B', C' sowie F und G ersetzt werden, die vorher nicht da waren.

Das tatsächliche Ergebnis nach git rebase masterdem In-Branch featureist folgendes:

      ( A---B---C ) feature@{1}
       /
      /       A'--B'--C' feature
     /       /
D---E---F---G master

Die Commits A, B und C bleiben nach dem Rebase hängen, sind aber über git reflog featureerreichbar feature@{1}.

Verschmelzen

Wenn jemand Ihren Zweig gezogen hat oder Sie ihn irgendwohin gepusht haben, sollten Sie stattdessen in ihn mergen, um Verwirrung und zusätzliche Arbeit am anderen Ende zu vermeiden. SieheWiederherstellen nach Upstream-Rebase.

Dies ist das Ergebnis git merge masterim Zweig feature:

      A---B---C feature                    A---B---C---M feature
     /                   --merge-->       /       ,---’
D---E---F---G master                 D---E---F---G master

Alternativ würde es, wenn Sie sich git merge featurein branch befinden master, folgendermaßen aussehen:

      A---B---C feature                    A---B---C feature
     /                   --merge-->       /         \
D---E---F---G master                 D---E---F---G---M master

verwandte Informationen