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