GIT merge master in einen Zweig

48193
mnml

Ich habe eine neue Funktion in einer neuen Branche entwickelt und nebenbei einige Änderungen in meiner Hauptbranche vorgenommen.

Ist es möglich, den Master-Zweig mit meinem neuen Zweig zusammenzuführen, um ihn auf dem neuesten Stand zu halten, damit ich nicht zu viele Zusammenführungskonflikte habe, wenn die neue Funktion fertig ist?

45
Hast du git-merge ausprobiert? Hilfe [hier] (http://www.kernel.org/pub/software/scm/git/docs/git-merge.html). karatedog vor 13 Jahren 0

1 Antwort auf die Frage

52
Christoffer Hammarström

Sie können entweder git merge masteroder git rebase master, in diesem Fall würde ich Git Rebase bevorzugen .

Denn git rebaseso, als würden die Änderungen am Feature-Zweig zusätzlich zu den Änderungen am Master-Zweig vorgenommen, wodurch der Versionsgraph einfacher wird.

Nehmen Sie das Beispiel aus dem Git Rebase-Handbuch :

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

Ist git rebasejedoch nur geeignet, wenn der Zweig nicht verteilt wurde, oder es wird Verwirrung und zusätzliche Arbeit nachgeschaltet, da die alten Commits A, B, C jetzt zu neuen Commits A ', B', C 'geworden sind.

Wenn jemand Ihren Zweig gezogen hat oder Sie ihn irgendwo hin geschoben haben, sollten Sie ihn stattdessen zusammenführen, um Verwirrung und zusätzliche Arbeit am anderen Ende zu vermeiden. Siehe Wiederherstellen von Upstream Rebase .

 A---B---C feature A---B---C---M feature / --merge--> / ,---’ D---E---F---G master D---E---F---G master 
Sie sollten erklären, warum Sie Rebase bevorzugen und was der Unterschied ist. Rebase erstellt eine lineare Historie - dies passt möglicherweise nicht zu dieser Frage. Andreas Rehm vor 13 Jahren 0
Ok, wenn ich es gut verstehe: Ich muss den Hauptzweig auschecken, wenn das neue Feature noch nicht abgeschlossen ist und eine Neubewertung, wenn es fertig ist? mnml vor 13 Jahren 0
Nein, wenn der Feature-Zweig ausgecheckt ist, führen Sie "git rebase master" aus, und es werden die Änderungen im Feature-Zweig "rebasiert", so dass sie auf den Änderungen im Master-Zweig "basieren". Wenn die Änderungen im Hauptzweig mit den Änderungen im Funktionszweig in Konflikt stehen, werden Sie von git aufgefordert, sie aufzulösen und fortzufahren, zu überspringen oder abzubrechen. Wenn Sie sich nicht sicher sind, können Sie einen Testzweig auschecken, um ihn mit `git checkout -b test-feature feature` auszuprobieren (vorausgesetzt, Ihr Feature-Zweig heißt" Feature "). Christoffer Hammarström vor 13 Jahren 0
Ich habe meine Rebase gemacht, aber jetzt, wenn ich von einem anderen Computer aus ziehe, kann ich meine Filiale nicht mehr sehen: Ich habe git checkout newfeature / git rebase master gemacht mnml vor 13 Jahren 0
Was meinst du damit "meine Filiale nicht mehr sehen kann"? Jedenfalls sollte "git rebase" nur verwendet werden, wenn der Zweig nicht verteilt wurde. Dies war vermutlich der Fall, da Sie sagten, es sei ein neuer Zweig, sorry. Weitere Informationen finden Sie unter [Wiederherstellen von Upstream-Rebase] (http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html#_recovering_from_upstream_rebase) in den Dokumenten, auf die ich verlinkt habe. Sie müssen stattdessen "git merge" verwenden. Sie können `git reflog` verwenden, um den vorherigen Kopf des Feature-Zweigs zu finden, wenn Sie ihn zurückbekommen möchten. Christoffer Hammarström vor 13 Jahren 2
ahh ok, keine Sorge, ich habe eine Kopie in einem anderen Ordner. Ich versuche nur zu verstehen, wie man diese Dinge benutzt. Es ist ein bisschen komisch, weil ich jetzt einen nicht verteilten Zweig namens newfeature habe und ich weiß nicht, wie ich es anstoßen soll :) mnml vor 13 Jahren 0
Ist es von Herkunft / Master oder von Local / Master? khaled_webdev vor 6 Jahren 0
Ich habe noch nie eine klarere Erklärung für die Unterschiede zwischen Verschmelzung und Wiederbelebung gesehen. Vielen Dank. Paulo Pedroso vor 5 Jahren 0