Hallo, Entdecker! An dieser Seite wird aktiv gearbeitet, oder sie wird noch übersetzt. Die neuesten und genauesten Informationen findest Du in unserer englischsprachigen Dokumentation.

Diese Version von GitHub Enterprise wurde eingestellt am 2021-03-02. Es wird keine Patch-Freigabe vorgenommen, auch nicht für kritische Sicherheitsprobleme. Für eine bessere Leistung, verbesserte Sicherheit und neue Features nimm ein Upgrade auf die neueste Version von GitHub Enterprise vor. Wende Dich an den GitHub Enterprise-Support, um Hilfe beim Upgrade zu erhalten.

Informationen zu Git-Rebase

Mit dem Befehl „git rebase“ kannst Du eine Reihe von Commits einfach ändern und den Verlauf Deines Repositorys anpassen. Du kannst Commits neu anordnen, bearbeiten oder miteinander squashen.

Inhalt dieses Artikels

In der Regel verwendest Du git rebase in folgenden Fällen:

  • Frühere Commit-Mitteilungen bearbeiten
  • Mehrere Commits zu einem einzigen zusammenfassen
  • Commits, die nicht mehr benötigt werden, löschen oder rückgängig machen

Warnung: Da die Änderung Deines Commit-Verlaufs zu Schwierigkeiten für alle anderen Benutzer des Repositorys führen kann, gilt ein Commit-Rebase nach dem Übertragen an ein Repository als schlechte Praxis. Informationen zu einem sicheren Rebase auf your GitHub Enterprise Server instance findest Du unter „Informationen zum Zusammenführen von Pull Requests.“

Commit-Rebase gegen einen Branch

Um ein Rebase für alle Commits zwischen einem anderen Branch und dem aktuellen Branch-Status durchzuführen, kannst Du den folgenden Befehl in Deiner Shell eingeben (entweder die Eingabeaufforderung unter Windows oder das Terminal unter Mac und Linux):

$ git rebase --interactive other_branch_name

Commit-Rebase anhand eines Zeitpunkts

Um ein Rebase für die letzten Commits in Deinem aktuellen Branch durchzuführen, kannst Du den folgenden Befehl in Deiner Shell eingeben:

$ git rebase --interactive HEAD~7

Während des Rebasings verfügbare Befehle

Beim Rebasing stehen sechs Befehle zur Verfügung:

pick
pick bedeutet einfach, dass der Commit enthalten ist. Wenn Du die Reihenfolge der pick-Befehle neu anordnest, ändert sich die Reihenfolge der Commits während des Rebase. Wenn Du keinen Commit einbeziehen möchtest, solltest Du die gesamte Zeile löschen.
reword
Der Befehl reword ist ähnlich wie pick, aber nachdem Du ihn verwendet hast, wird der Rebase-Prozess angehalten, sodass Du die Commit-Mitteilung ändern kannst. Die Änderungen, die durch den Commit vorgenommen werden, sind davon nicht betroffen.
edit
Wenn Du edit für einen Commit wählst, hast Du die Möglichkeit, den Commit zu ändern, was bedeutet, dass Du den Commit hinzufügen oder komplett ändern kannst. Du kannst auch zusätzliche Commits erstellen, bevor Du mit dem Rebasing fortfährst. Auf diese Weise kannst Du einen großen Commit in kleinere aufteilen oder fehlerhafte Änderungen, die in einem Commit vorgenommen wurden, entfernen.
squashen
Mit diesem Befehl kannst Du zwei oder mehr Commits zu einem einzigen Commit zusammenfassen. Ein Commit wird in den Commit darüber eingefügt. Git gibt Dir die Möglichkeit, eine neue Commit-Mitteilung zu schreiben, die beide Änderungen beschreibt.
fixup
Dies ist ähnlich wie squash, aber die Mitteilung des zusammenzuführenden Commits wird verworfen. Der Commit wird einfach in den Commit darüber zusammengefügt, und die Mitteilung des vorstehenden Commits wird verwendet, um beide Änderungen zu beschreiben.
exec
Hiermit kannst Du beliebige Shell-Befehle auf einem Commit ausführen.

Beispiel für die Verwendung von git rebase

Unabhängig davon, welchen Befehl Du verwendest, startet Git Deinen Standardtexteditor und öffnet eine Datei, die die Commits in dem von Dir gewählten Bereich beschreibt. Diese Datei sieht in etwa so aus:

pick 1fc6c95 Patch A
pick 6b2481b Patch B
pick dd1475d something I want to split
pick c619268 A fix for Patch B
pick fa39187 something to add to patch A
pick 4ca2acc i cant' typ goods
pick 7b36971 something to move before patch B

# Rebase 41a72e6..7b36971 onto 41a72e6
#
# Befehle:
#  p, pick = Commit verwenden
#  r, reword = Commit verwenden, aber die Commit-Mitteilung bearbeiten
#  e, edit = Commit verwenden, aber zum Ändern unterbrechen
#  s, squash = Commit verwenden, aber mit dem vorherigen Commit verschmelzen
#  f, fixup = wie "squash", aber die Protokollnachricht dieses Commits verwerfen
#  x, exec = Befehl (der Rest der Zeile) mit Shell ausführen
#
# Wenn Du hier eine Zeile entfernst, GEHT DIESER COMMIT VERLOREN.
# Wenn Du jedoch alles entfernst, wird das Rebasing abgebrochen.
#

Wenn man diese Informationen von oben nach unten betrachtet, wird Folgendes deutlich:

  • Es werden sieben Commits aufgelistet, was darauf hindeutet, dass es sieben Änderungen zwischen unserem Startpunkt und unserem aktuellen Branch-Status gab.
  • Die Commits, die Du für das Rebasing ausgewählt hast, werden in der Reihenfolge der ältesten Änderungen (oben) bis hin zu den neuesten Änderungen (unten) sortiert.
  • In jeder Zeile sind ein Befehl (standardmäßig pick), der Commit-SHA und die Commit-Mitteilung aufgeführt. Der gesamte git rebase-Prozess dreht sich um Deine Manipulation dieser drei Spalten. Die Änderungen, die Du vornimmst, sind ein Rebase Deines Repositorys.
  • Nach den Commits teilt Dir Git mit, mit welchem Bereich von Commits wir arbeiten (41a72e6..7b36971).
  • Schließlich bietet Git etwas Unterstützung, indem es Dir die Befehle nennt, die Dir beim Rebasing von Commits zur Verfügung stehen.

Weiterführende Informationen