logo

Git Rebase

Beim Rebasing handelt es sich um einen Prozess, bei dem Commits zusätzlich zu einem anderen Base-Trip erneut angewendet werden. Es wird verwendet, um eine Folge von Commits aus verschiedenen Zweigen auf einen endgültigen Commit anzuwenden. Es ist eine Alternative zum Befehl git merge. Es ist ein linearer Prozess der Verschmelzung.

In Git bezeichnet der Begriff „Rebase“ den Prozess des Verschiebens oder Kombinierens einer Folge von Commits zu einem neuen Basis-Commit. Rebasing ist sehr nützlich und visualisiert den Prozess in der Umgebung eines Feature-Branching-Workflows.

Es ist gut, Ihren Zweig neu zu basieren, bevor Sie ihn zusammenführen.

Git Rebase

Im Allgemeinen handelt es sich um eine Alternative zum Befehl „git merge“. Beim Zusammenführen handelt es sich immer um einen sich vorwärts ändernden Datensatz. Im Vergleich dazu ist Rebase ein überzeugendes Tool zum Umschreiben des Verlaufs in Git. Es führt die verschiedenen Commits nacheinander zusammen.

Angenommen, Sie haben drei Commits in Ihrem Master-Zweig und drei in Ihrem anderen Zweig namens test durchgeführt. Wenn Sie dies zusammenführen, werden alle Commits gleichzeitig zusammengeführt. Wenn Sie es jedoch umbasieren, wird es linear zusammengeführt. Betrachten Sie das folgende Bild:

Git Rebase

Das obige Bild beschreibt, wie Git Rebase funktioniert. Die drei Commits des Master-Zweigs werden linear mit den Commits des Test-Zweigs zusammengeführt.

Die Zusammenführung ist die einfachste Möglichkeit, die Zweige zu integrieren. Es führt eine Drei-Wege-Zusammenführung zwischen den beiden letzten Branch-Commits durch.

So führen Sie ein Rebase durch

Wenn Sie einige Commits für einen Feature-Zweig (Testzweig) und einige für den Master-Zweig vorgenommen haben. Sie können jeden dieser Zweige umbasieren. Verwenden Sie den Befehl git log, um die Änderungen zu verfolgen (Commit-Verlauf). Gehen Sie zum gewünschten Zweig, den Sie umbenennen möchten. Führen Sie nun den Rebase-Befehl wie folgt aus:

Syntax:

 $git rebase 

Wenn es in der Verzweigung Konflikte gibt, lösen Sie diese und führen Sie die folgenden Befehle aus, um mit den Änderungen fortzufahren:

 $ git status 

Es wird verwendet, um den Status zu überprüfen,

 $git rebase --continue 

Der obige Befehl wird verwendet, um mit den von Ihnen vorgenommenen Änderungen fortzufahren. Wenn Sie die Änderung überspringen möchten, können Sie wie folgt überspringen:

Java-Lambda-Ausdrücke
 $ git rebase --skip 

Wenn die Umbasierung abgeschlossen ist. Schieben Sie das Repository zum Ursprung. Betrachten Sie das folgende Beispiel, um den Befehl „git merge“ zu verstehen.

Angenommen, Sie haben eine Zweigniederlassung test2 an dem Sie arbeiten. Sie befinden sich jetzt im Test2-Zweig und haben einige Änderungen in der Projektdatei vorgenommen neueDatei1.txt .

Fügen Sie diese Datei zum Repository hinzu:

 $ git add newfile1.txt 

Übernehmen Sie nun die Änderungen. Verwenden Sie den folgenden Befehl:

 $ git commit -m 'new commit for test2 branch.' 

Die Ausgabe sieht folgendermaßen aus:

 [test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+) 

Wechseln Sie den Zweig zum Master:

Python __dict__
 $ git checkout master 

Ausgabe:

 Switched to branch 'master.' Your branch is up to date with 'origin/master.' 

Jetzt befinden Sie sich im Hauptzweig. Ich habe die Änderungen zu meiner Datei hinzugefügt, sagt neue Datei.txt . Mit dem folgenden Befehl wird die Datei zum Repository hinzugefügt.

 $ git add newfile.txt 

Übertragen Sie nun die Datei für Änderungen:

 $ git commit -m ' new commit made on the master branch.' 

Ausgabe:

 [master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master) 

Um den Protokollverlauf zu überprüfen, führen Sie den folgenden Befehl aus.

 $ git log --oneline 

Ausgabe:

Git Rebase

Wie wir im Protokollverlauf sehen können, gibt es einen neuen Commit im Master-Zweig. Was soll ich tun, wenn ich meinen Test2-Zweig neu starten möchte? Sehen Sie sich das folgende Rebase-Branch-Szenario an:

Rebase-Zweig

Wenn wir viele Commits aus verschiedenen Zweigen haben und diese in einem zusammenführen möchten. Dazu haben wir zwei Möglichkeiten: entweder wir können es zusammenführen oder es neu basieren. Es ist gut, Ihren Zweig neu zu starten.

Aus dem obigen Beispiel haben wir uns auf den Master-Zweig festgelegt und möchten ihn auf den test2-Zweig umbasieren. Sehen wir uns die folgenden Befehle an:

 $ git checkout test2 

Mit diesem Befehl wechseln Sie vom Master zum test2-Zweig.

Ausgabe:

 Switched to branch 'test2.' 

Jetzt befinden Sie sich im test2-Zweig. Daher können Sie den Test2-Zweig mit dem Master-Zweig neu basieren. Siehe den folgenden Befehl:

 $ git rebase master 

Mit diesem Befehl wird der Test2-Zweig neu erstellt und als angezeigt Anwenden: Neues Commit für Test2-Zweig . Betrachten Sie die folgende Ausgabe:

Ausgabe:

Git Rebase

Git Interactive Rebase

Git erleichtert mit Interactive Rebase; Es ist ein leistungsstarkes Werkzeug, das verschiedene Operationen ermöglicht, z bearbeiten, umschreiben, neu anordnen, und mehr zu bestehenden Commits. Interactive Rebase kann nur auf dem aktuell ausgecheckten Zweig ausgeführt werden. Legen Sie daher Ihren lokalen HEAD-Zweig in der Seitenleiste fest.

Die interaktive Git-Rebase kann mit dem Rebase-Befehl aufgerufen werden. Geben Sie einfach Folgendes ein -ich zusammen mit dem Rebase-Befehl. Hier ' ich ' steht für interaktiv. Die Syntax dieses Befehls ist unten angegeben:

Syntax:

 $ git rebase -i 

Es werden alle verfügbaren interaktiven Optionen aufgelistet.

Arten des maschinellen Lernens

Ausgabe:

Git Rebase

Nach der angegebenen Ausgabe wird ein Editor mit verfügbaren Optionen geöffnet. Betrachten Sie die folgende Ausgabe:

Ausgabe:

Git Rebase

Wenn wir den Befehl „git Interactive rebase“ ausführen, wird Ihr Standardtexteditor mit der obigen Ausgabe geöffnet.

Die darin enthaltenen Optionen sind unten aufgeführt:

  • Wählen
  • Umformulieren
  • Bearbeiten
  • Quetschen
  • In Ordnung bringen
  • Geschäftsführer
  • Brechen
  • Fallen
  • Etikett
  • Zurücksetzen
  • Verschmelzen

Die oben genannten Optionen führen ihre spezifischen Aufgaben mit git-rebase aus. Lassen Sie uns jede dieser Optionen kurz verstehen.

Wählen Sie (-p):

Pick steht hier dafür, dass das Commit enthalten ist. Die Reihenfolge der Commits hängt von der Reihenfolge der Auswahlbefehle während des Rebase ab. Wenn Sie kein Commit hinzufügen möchten, müssen Sie die gesamte Zeile löschen.

Umformulieren (-r):

Das Umwort ist dem Befehl „pick“ ziemlich ähnlich. Die Reword-Option hat den Rebase-Prozess angehalten und bietet die Möglichkeit, die Commit-Nachricht zu ändern. Es wirkt sich nicht auf die durch das Commit vorgenommenen Änderungen aus.

Bearbeitung(en):

Mit der Bearbeitungsoption können Sie den Commit ändern. Durch die Änderung können Commits hinzugefügt oder vollständig geändert werden. Wir können vor dem Rebase-Fortsetzungsbefehl auch zusätzliche Commits durchführen. Es ermöglicht uns, einen großen Commit in einen kleineren Commit aufzuteilen. Darüber hinaus können wir fehlerhafte Änderungen entfernen, die in einem Commit vorgenommen wurden.

Kürbis (-s):

Mit der Squash-Option können Sie zwei oder mehr Commits zu einem einzigen Commit kombinieren. Es ermöglicht uns auch, eine neue Commit-Nachricht zur Beschreibung der Änderungen zu schreiben.

Korrektur (-f):

Es ist dem Squash-Befehl ziemlich ähnlich. Die Nachricht des zusammenzuführenden Commits wurde verworfen. Zur Beschreibung beider Änderungen wird die ältere Commit-Nachricht verwendet.

Exec (-x):

Mit der Option exec können Sie beliebige Shell-Befehle für einen Commit ausführen.

Pause (-b):

Die Break-Option stoppt die Umbasierung an der richtigen Position. Die Neubasierung wird später mit „ git rebase --continue ' Befehl.

Drop (-d):

Die Drop-Option wird verwendet, um das Commit zu entfernen.

Beschriftung (-l):

Die Beschriftungsoption wird verwendet, um die aktuelle Kopfposition mit einem Namen zu markieren.

Zurücksetzen (-t):

Mit der Reset-Option wird der Kopf auf ein Etikett zurückgesetzt.

Java-Array-Liste

GitMerge vs. Rebase

Es ist eine der häufigsten Rätselfragen für Git-Benutzer, wann der Befehl „merge“ und wann „rebase“ verwendet werden soll. Beide Befehle sind ähnlich und werden verwendet, um die von den verschiedenen Zweigen eines Repositorys vorgenommenen Commits zusammenzuführen.

Ein Rebasing wird in einem gemeinsam genutzten Zweig nicht empfohlen, da der Rebasing-Prozess inkonsistente Repositorys erstellt. Für Einzelpersonen kann eine Umbasierung sinnvoller sein als eine Zusammenführung. Wenn Sie den kompletten Verlauf sehen möchten, sollten Sie die Zusammenführung nutzen. Merge verfolgt den gesamten Verlauf der Commits, während Rebase einen neuen neu schreibt.

Git-Rebase-Befehle werden als Alternative zu Git Merge bezeichnet. Sie weisen jedoch einige wesentliche Unterschiede auf:

Git Merge Git Rebase
Durch das Zusammenführen wird beim Zusammenführen ein endgültiges Commit erstellt. Git-Rebase erstellt beim Rebasing kein Commit.
Es führt alle Commits zu einem einzigen Commit zusammen. Es erstellt eine lineare Verfolgung von Commits.
Es wird ein grafischer Verlauf erstellt, der möglicherweise etwas komplex zu verstehen ist. Es entsteht eine lineare Geschichte, die leicht verständlich ist.
Es ist sicher, zwei Zweige zusammenzuführen. Git „rebase“ kümmert sich um den schwerwiegenden Vorgang.
Die Zusammenführung kann sowohl in öffentlichen als auch in privaten Zweigstellen durchgeführt werden. Es ist die falsche Wahl, Rebasing auf öffentliche Zweige anzuwenden.
Beim Zusammenführen wird der Inhalt des Feature-Branchs in den Master-Branch integriert. Daher wird der Hauptzweig geändert und der Verlauf des Funktionszweigs bleibt konsistent. Eine Neubasierung des Master-Zweigs kann Auswirkungen auf den Feature-Zweig haben.
Durch die Verschmelzung bleibt die Geschichte erhalten. Umbasierung schreibt die Geschichte neu.
Git Merge stellt alle Konflikte auf einmal dar. Git Rebase präsentiert Konflikte nacheinander.