Ich habe einen lokalen Zweig eines Projekts ("configUpdate"), den ich aus dem Projekt eines anderen herausgegabelt habe, und ich habe eine Menge Änderungen daran vorgenommen und möchte die vorgenommenen Änderungen in meinem lokalen Zweig zusammenführen.
ich habe es versucht
git pull --rebase origin configUpdate
Aber die letzten Änderungen wurden nicht berücksichtigt. Wie kann ich die beiden zusammenführen? (auch für Bonuspunkte, was habe ich mit dem pull --rebase
Befehl gemacht?)
Antworten:
configUpdate
Führen Sie in Ihrem Feature-Zweig (z. B. ) Folgendes aus:Oder die kürzere Form:
Warum das funktioniert:
git merge branchname
Nimmt neue Commits aus dem Zweigbranchname
und fügt sie dem aktuellen Zweig hinzu. Bei Bedarf wird automatisch ein "Merge" -Commit hinzugefügt.git rebase branchname
Nimmt neue Commits aus der Filialebranchname
und fügt sie "unter" Ihre Änderungen ein. Genauer gesagt ändert es den Verlauf des aktuellen Zweigs so, dass er auf der Spitze von basiertbranchname
, mit allen Änderungen, die Sie darüber hinaus vorgenommen haben.git pull
ist im Grunde das gleiche wiegit fetch; git merge origin/master
.git pull --rebase
ist im Grunde das gleiche wiegit fetch; git rebase origin/master
.Warum sollten Sie also
git pull --rebase
lieber verwenden alsgit pull
? Hier ist ein einfaches Beispiel:Sie beginnen mit der Arbeit an einer neuen Funktion.
Bis Sie bereit sind, Ihre Änderungen zu pushen, wurden mehrere Commits von anderen Entwicklern gepusht.
Wenn Sie
git pull
(die Zusammenführung verwenden), werden Ihre Änderungen zusätzlich zu einem automatisch erstellten Zusammenführungs-Commit durch die neuen Commits vergraben.Wenn Sie
git pull --rebase
stattdessen git wird Vorspulen deines Herrn vor-, dann Änderungen an der Spitze an.quelle
Ich fand heraus, dass es war:
quelle
pull --rebase
nicht funktioniert, weil Sieorigin
auf Ihre Gabel zeigten. Es hätte funktioniert, wenn Sie es getan hättengit pull --rebase upstream/master
.Wechseln Sie zu Ihrer lokalen Niederlassung
Führen Sie den Remote-Master mit Ihrer Zweigstelle zusammen
Wenn Sie Konflikte haben, korrigieren Sie diese und führen Sie für jede Konfliktdatei den Befehl aus
Rebase fortsetzen
quelle
Git Rebase schien für mich nicht zu funktionieren. Nach der Git-Rebase wurde beim Versuch, Änderungen in meinen lokalen Zweig zu übertragen, immer wieder eine Fehlermeldung angezeigt ("Hinweis: Aktualisierungen wurden abgelehnt, da sich die Spitze Ihres aktuellen Zweigs hinter dem Remote-Gegenstück befindet. Integrieren Sie die Remote-Änderungen (z. B. 'Git Pull'). .. ') vor dem erneuten Drücken. ") auch nach dem Ziehen des Git. Was schließlich für mich funktioniert hat, war Git Merge.
Wenn Sie ein Anfänger wie ich sind, finden Sie hier einen guten Artikel über Git Merge vs Git Rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
quelle