Der ultimative Leitfaden für Git Merge und Git Rebase

Willkommen in unserem ultimativen Leitfaden für die Befehle git merge und git rebase. In diesem Tutorial erfahren Sie alles, was Sie über die Kombination mehrerer Zweige mit Git wissen müssen.

Git Merge

Der Befehl git merge führt alle Änderungen, die an der Codebasis in einem separaten Zweig vorgenommen wurden, als neues Commit zu Ihrem aktuellen Zweig zusammen.,

Die Befehlssyntax lautet wie folgt:

git merge BRANCH-NAME

Wenn Sie z. B. in einem Zweig mit dem Namen dev arbeiten und alle neuen Änderungen zusammenführen möchten, die in einem Zweig mit dem Namen new-features vorgenommen wurden, geben Sie den folgenden Befehl aus:

git merge new-features

div>

Hinweis: Wenn in Ihrem aktuellen Zweig nicht festgeschriebene Änderungen vorhanden sind, können Sie mit Git erst zusammengeführt werden, wenn alle Änderungen in Ihrem aktuellen Zweig festgeschrieben wurden., Um mit diesen Änderungen umzugehen, können Sie entweder:

Erstellen Sie einen neuen Zweig und übernehmen Sie die Änderungen

git checkout -b new-branch-namegit add .git commit -m "<your commit message>"

Verstauen Sie sie

git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree

Alle Änderungen aufgeben

git reset --hard # removes all pending changes

Git Rebase

Rebasing a branch in Git is a weg, um die Gesamtheit eines Zweiges zu einem anderen Punkt im Baum zu bewegen. Das einfachste Beispiel ist das Verschieben eines Zweiges weiter oben im Baum., Angenommen, wir haben einen Zweig, der am Punkt A vom Masterzweig abweicht:

 /o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master

Wenn Sie den Rebase so verschieben können:

 /o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master

Stellen Sie sicher, dass Sie alle Commits im Rebase in Ihrem Masterzweig haben. Überprüfen Sie den Zweig, den Sie rebase möchten, und geben Sie git rebase master (wobei master der Zweig ist, auf dem Sie rebase möchten)., dass zum Beispiel ein Zweig, der auf einem anderen Zweig basierte (nennen wir es feature), auf master rebased wird:

 /---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master

Nach git rebase master branch oder git rebase master Wenn Sie den Zweig ausgecheckt haben, erhalten Sie:

 /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch

Git rebase.in der Konsole

Um git rebase in der Konsole mit einer Liste von Commits zu verwenden, können Sie die Rebase auswählen, bearbeiten oder löschen:

  • Geben Sie git rebase -i HEAD~5 ein, wobei die letzte Nummer eine beliebige Anzahl von Commits aus den letzten Commits ist, die Sie überprüfen möchten.,
  • Drücken Sie in vim esc und dann i, um den Test zu bearbeiten.
  • Auf der linken Seite können Sie die pick mit einem der folgenden Befehle überschreiben. Wenn Sie ein Commit in ein vorheriges komprimieren und die Commit-Nachricht verwerfen möchten, geben Sie f anstelle der pick des Commits ein.
  • Speichern und beenden Sie Ihren Texteditor.
  • Wenn rebase gestoppt wird, nehmen Sie die erforderlichen Anpassungen vor und verwenden Sie dann git rebase --continue, bis die Rebase erfolgreich ist.,
  • Wenn es erfolgreich neu gestartet wird, müssen Sie Ihre Änderungen mit git push -f erzwingen, um die neu erstellte Version zu Ihrem Remote-Repository hinzuzufügen.
  • Wenn es einen Zusammenführungskonflikt gibt, gibt es eine Reihe von Möglichkeiten, dies zu beheben, einschließlich der Befolgung der Vorschläge in diesem Handbuch. Eine Möglichkeit besteht darin, die Dateien in einem Texteditor zu öffnen und die gewünschten Teile des Codes zu löschen. Verwenden Sie dann gefolgt von git rebase --continue., Sie können das in Konflikt stehende Commit überspringen, indem Sie git rebase --skip und das Rebasing beenden, indem Sie git rebase --abort in Ihrer Konsole ausführen.

Zusammenführungskonflikte

Ein Zusammenführungskonflikt tritt auf, wenn Sie Commits für separate Zweige vornehmen, die dieselbe Zeile auf widersprüchliche Weise ändern.,welche Version der Datei in einer Fehlermeldung ähnlich der folgenden gespeichert werden soll:

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

Wenn Sie sich die Datei in Ihrem Code-Editor ansehen, können Sie sehen, wo der Konflikt stattgefunden hat:

<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address

Git hat der Datei einige zusätzliche Zeilen hinzugefügt:

  • <<<<<<< HEAD
  • =======
  • >>>>>>> updated_address

Git Merge vs Git Rebase

Sowohl git merge als auch git rebase sind sehr nützliche Befehle, und einer ist nicht besser als der andere., Es gibt jedoch einige sehr wichtige Unterschiede zwischen den beiden Befehlen, die Sie und Ihr Team berücksichtigen sollten.

Wenn git merge ausgeführt wird, wird ein zusätzliches Merge-Commit erstellt. Wenn Sie in Ihrem lokalen Repository arbeiten, kann der Commit-Verlauf durch zu viele Merge-Commits verwirrend aussehen. Eine Möglichkeit, das Merge-Commit zu vermeiden, besteht darin, stattdessen git rebase.

git rebase ist ein sehr mächtiges feature. Davon abgesehen ist es auch riskant, wenn es nicht richtig verwendet wird., git rebase ändert den Commit-Verlauf, verwenden Sie ihn also vorsichtig. Wenn das Rebasing im Remote-Repository durchgeführt wird, können viele Probleme auftreten, wenn andere Entwickler versuchen, die neuesten Codeänderungen aus dem Remote-Repository abzurufen. Denken Sie daran, nur laufen git rebase in einem lokalen repository.

Das ist alles, was Sie wissen müssen, um mit den Besten von ihnen zu fusionieren und Rebase.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.