Rebase auf ein bestimmtes Commit in Git

John Wachira 15 Februar 2024
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:

Git-Rebase auf vorheriges Commit – Basis-Workflow

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.

Git-Rebase auf bestimmtes Commit – Arbeitsablauf

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:

Git-Rebase auf bestimmtes Commit – Ausgabe

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.

Git-Rebase auf bestimmtes Commit und Entfernen des ersten Commit – Arbeitsablauf

So machen wir es:

$ git rebase –onto 846e2fa e2ff2bc

Der obige Befehl hätte die unten gezeigte Wirkung:

Git-Rebase auf bestimmten Commit und Entfernen des ersten Commit – Ausgabe

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?

Git-Rebase auf bestimmtes Commit und Entfernen des letzten Commit – Arbeitsablauf

Hier kommt das dritte Argument ins Spiel. Wir werden Folgendes ausführen:

$ git rebase –onto 846e2fa bd9172c 730f163

Dies führt zu:

Git-Rebase auf bestimmtes Commit und Entfernen des letzten Commit – Ausgabe

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 Wachira avatar John Wachira avatar

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

Verwandter Artikel - Git Rebase