Ich habe ein neues Feature für einen neuen Zweig entwickelt und nebenbei einige Änderungen an meinem Hauptzweig vorgenommen.
Ist es möglich, den Hauptzweig in meinem neuen Zweig zusammenzuführen, um ihn auf dem neuesten Stand zu halten, sodass nach Abschluss des neuen Features nicht zu viele Zusammenführungskonflikte auftreten?
git
version-control
merge
branch
mnml
quelle
quelle
Antworten:
Sie können entweder
git merge master
odergit rebase master
, in diesem Fall würde ich Git Rebase bevorzugen .Weil
git rebase
es so aussieht, als ob die Änderungen im Feature-Zweig über den Änderungen im Master-Zweig vorgenommen wurden, wodurch das Versionsdiagramm einfacher wird.Rebase
Nehmen wir das Beispiel aus dem git rebase Handbuch ,
git rebase master
in Zweigfeature
:Dies
git rebase
ist jedoch nur dann sinnvoll, wenn die Verzweigung nicht verteilt wurde, da die alten Commits A, B, C jetzt durch neue Commits A ', B', C 'und F ersetzt werden und G, die vorher nicht da waren.Das eigentliche Ergebnis nach
git rebase master
in branchfeature
ist folgendes:Commits A, B, C baumeln nach dem Rebase, sind aber über erreichbar
git reflog feature
.Verschmelzen
Wenn jemand an Ihrem Zweig gezogen hat oder Sie ihn irgendwo hingeschoben haben, sollten Sie stattdessen in ihn einarbeiten, um Verwirrung und zusätzliche Arbeit am anderen Ende zu vermeiden. Siehe Wiederherstellung nach Upstream-Rebase .
Dies ist das Ergebnis von
git merge master
in branchfeature
:Wenn Sie sich
git merge feature
in einem Zweig befindenmaster
, würde dies alternativ so aussehen:quelle
git rebase master
wenn der Feature-Zweig ausgecheckt ist , wird ausgeführt , und die Änderungen im Feature-Zweig werden "neu berechnet", sodass sie auf den Änderungen im Master-Zweig "basieren". Wenn die Änderungen im Master-Zweig mit den Änderungen im Feature-Zweig in Konflikt stehen, werden Sie von git aufgefordert, sie aufzulösen und fortzusetzen, zu überspringen oder abzubrechen. Wenn Sie sich nicht sicher sind, können Sie einen Testzweig auschecken, um ihngit checkout -b test-feature feature
anzuprobieren (vorausgesetzt, Ihr Feature-Zweig heißt "Feature").git rebase
sollte nur verwendet werden, wenn der Zweig nicht verteilt wurde, was meiner Meinung nach der Fall war, da Sie sagten, es sei ein neuer Zweig, tut mir leid. Siehe Wiederherstellung nach Upstream-Rebase in den Dokumenten, mit denen ich verknüpft bin . Sie müssengit merge
stattdessen verwenden. Mit können Sie dengit reflog
Kopf Ihres vorherigen Feature-Zweigs suchen, wenn Sie ihn zurückholen möchten.