Git Rebase
Zuletzt aktualisiert
git rebase verschiebt die Commits deines Branches, sodass sie oben auf einem anderen Branch neu abgespielt werden, und erzeugt eine gerade, lineare Historie statt eines Merge-Commits. Interaktives Rebase (-i) geht weiter und lässt dich Commits zusammenfassen, umsortieren, bearbeiten oder verwerfen. Da Rebasing Commits umschreibt, mach das nur bei Arbeit, die du noch nicht geteilt hast.
Probiere das im Terminal-Playground aus - eine echte Shell in deinem Browser, nichts zu installieren.
Syntax
| Command | What it does |
|---|---|
git rebase main | Spielt deine Commits oben auf main neu ab |
git rebase -i HEAD~3 | Bearbeitet interaktiv die letzten 3 Commits |
git rebase --onto main old new | Verschiebt einen Bereich von Commits auf main |
git rebase --continue | Setzt nach dem Lösen von Konflikten fort |
git rebase --abort | Bricht das Rebase ab und stellt den Branch wieder her |
git pull --rebase | Macht pull und rebase statt merge |
Schlüsselwörter des interaktiven Rebase
Ändere im Editor, den -i öffnet, pick in eines von diesen.
| Keyword | What it does |
|---|---|
pick | Behält den Commit |
reword | Behält den Commit, bearbeitet seine Nachricht |
squash | Faltet in den vorherigen Commit, führt Nachrichten zusammen |
fixup | Faltet ein, verwirft diese Nachricht |
drop | Entfernt den Commit vollständig |
Git rebase FAQ
Was macht git rebase?
Es nimmt die Commits deines aktuellen Branches und spielt sie einen nach dem anderen oben auf einem anderen Branch neu ab, als hättest du deine Arbeit vom neuesten Commit dieses Branches aus begonnen. Das Ergebnis ist eine lineare Historie ohne Merge-Commit. Die Commits werden dabei umgeschrieben (sie erhalten neue Hashes).
Was ist interaktives Rebase?
git rebase -i <base> öffnet einen Editor, der die Commits seit <base> auflistet, in dem du sie umsortieren, mehrere zu einem squashen, Nachrichten reworden, einen Commit editen oder ihn droppen kannst. Es ist das wichtigste Werkzeug, um eine unordentliche Reihe von Commits vor dem Teilen aufzuräumen.Was ist die goldene Regel des Rebasing?
Rebase niemals Commits, auf denen andere ihre Arbeit bereits aufgebaut haben - typischerweise alles, was in einen geteilten Branch gepusht wurde. Da Rebase Commits umschreibt, zwingt es alle anderen, eine auseinandergelaufene Historie in Einklang zu bringen. Rebase frei bei lokalen, ungepushten Commits; verwende merge oder revert für öffentliche.
Wie behebe oder breche ich ein Rebase mit Konflikten ab?
Wenn ein Rebase bei einem Konflikt stoppt, löse die Dateien, mache
git add für sie und führe dann git rebase --continue aus. Verwende git rebase --skip, um den aktuellen Commit zu verwerfen, oder git rebase --abort, um vollständig abzubrechen und den Branch in den Zustand vor dem Start des Rebase zurückzuversetzen.Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um
git rebase in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt Rebasing ebenfalls Schritt für Schritt.