Rebase auf ein bestimmtes Commit in Git
In diesem Artikel wird der Prozess des Rebasing auf ein bestimmtes Commit in Git erläutert. Wir werden verschiedene Szenarien verwenden, um zu veranschaulichen, wie dies erreicht werden kann.
Wir verwenden den Befehl git rebase --onto
, um einen Branch auf einen bestimmten Commit umzubasen. Lassen Sie uns gleich einsteigen.
Rebase auf ein bestimmtes Commit in Git
Wir verwenden das Flag --onto
, wenn wir einen Branch auf einen anderen Branch umbasen und die Commits spezifizieren müssen.
Grundlegende Syntax:
git rebase –onto <new-parent> <old-parent> <head-of-new-parent>
Sehen wir uns Beispielszenarien an.
Hier ist der grundlegende Workflow, den wir verwenden werden:
Rebase new-feature
auf ein bestimmtes Commit in main
In unserem ersten Szenario gehen wir davon aus, dass wir ein Commit in main
verwenden wollten, ohne den gesamten Zweig umzubasieren. Dazu müssen wir den SHA-1
der Commits im Spiel notieren.
Wir können git log <branch-name>
verwenden, um die Hashes für die Commits zu erhalten.
In unserem Fall wollen wir die Commits im Zweig new-feature
in den Zweig main
beim Commit 846e2fa
(vorletztes) verschieben. Wir werden Folgendes ausführen:
$ git rebase –onto 846e2fa bd9172c
Der obige Befehl hat die unten gezeigte Wirkung:
Da wir das gesamte new-feature
verschieben wollten, brauchen wir kein drittes Argument in unserem Befehl. Git verschiebt standardmäßig den gesamten Zweig, wenn Sie das dritte Argument weglassen.
Setzen Sie new-feature
auf ein bestimmtes Commit in main
um und entfernen Sie das erste Commit in new-feature
Nehmen wir an, dass unser e2ff2bc
eine Abhängigkeit ist, und wir möchten unseren Zweig nach main
beim Commit 846e2fa
verschieben, was die gleiche Abhängigkeit ist, die wir haben. Im Klartext wollen wir new-feature
auf main
bei 846e2fa
umbasen und den ersten Commit in new-feature
weglassen.
So machen wir es:
$ git rebase –onto 846e2fa e2ff2bc
Der obige Befehl hätte die unten gezeigte Wirkung:
Der Befehl git rebase -onto
nimmt den übergeordneten Commit als Referenz. Einfacher ausgedrückt, wir sollen den Commit vor dem Commit referenzieren, den wir speichern möchten.
Setzen Sie new-feature
auf ein bestimmtes Commit in main
um und entfernen Sie das letzte Commit in new-feature
Nehmen wir an, wir wollen new-feature
nach 846e2fa
verschieben, aber den Commit d7dbeb
in new-feature
weglassen. Wie würden wir vorgehen?
Hier kommt das dritte Argument ins Spiel. Wir werden Folgendes ausführen:
$ git rebase –onto 846e2fa bd9172c 730f163
Dies führt zu:
Das dritte Argument zeigt nur auf den HEAD
des neuen Eltern-Commits; in unserem Fall haben wir 730f163
. Dies sollte den Commit und alle nachfolgenden Commits löschen.
Kurz gesagt, Git ermöglicht es uns, einen Branch auf ein bestimmtes Commit umzubasen. Der Befehl git rebase -onto
akzeptiert beim Rebasing drei Argumente.
Denken Sie immer daran, dass das dritte Argument den neuen übergeordneten Commit vorschreibt.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn