Git-Anleitungen
Git interaktives Rebase in einer GUI: Squash, Fixup, Reword, Reorder und Drop-Commits
Wie man Commits mit einer interaktiven Rebase-GUI komprimiert, repariert, umformuliert, neu anordnet und löscht, was jede Aktion in git rebase -i bewirkt und wie man ein fehlgeschlagenes Rebase rückgängig macht.

Mit einer interaktiven Rebase-GUI können Sie die Commits in Ihrem Zweig aus einer Liste statt aus einer Textdatei umschreiben: Wählen Sie einen Start-Commit, geben Sie jedem darüber liegenden Commit eine Aktion (Auswählen, Stauchen, Korrigieren, Umformulieren, Bearbeiten oder Ablegen), ziehen Sie sie in eine neue Reihenfolge und lassen Sie sie von Git wiedergeben. Es führt den gleichen Vorgang wie git rebase -i aus, sodass das Ergebnis mit dem der Befehlszeile identisch ist. Klicken Sie in GitTree mit der rechten Maustaste auf das Commit direkt unter denen, die Sie ändern möchten, wählen Sie Interaktives Rebase der oben genannten Commits…, legen Sie die Aktionen fest und klicken Sie auf Start Rebase. Wenn das Ergebnis falsch ist, setzt Undo den Zweig zurück.
Dieses interaktive Rebase-Tutorial behandelt jede Aktion, drei Möglichkeiten zum Squash von Commits, die passenden Befehle, Autosquash und das Sicherheitsnetz. Die Screenshots zeigen den interaktiven Rebase-Editor von GitTree, einen Git-Client für macOS, Windows und Linux, aber das Git-Verhalten ist in jedem Tool gleich.
Was die interaktive Git-Rebase bewirkt und wann sie verwendet wird
Ein normaler Rebase verschiebt eine Reihe von Commits auf eine neue Basis. Mit einem interaktiven Rebase können Sie diese Reihe auch unterwegs bearbeiten: Git zeigt die Commits an, die gerade wiedergegeben werden, Sie ändern die Liste und Git erstellt den Zweig entsprechend neu. Jeder neu geschriebene Commit erhält eine neue ID, weshalb interaktives Rebase zur Phase gehört, bevor Sie Ihre Arbeit teilen. Typische Gründe, danach zu greifen:
- Fassen Sie eine Reihe von „Wip“-, „Tippfehler beheben“- und „Adressüberprüfung“-Commits zu einem sinnvollen Commit zusammen, bevor Sie eine Pull-Anfrage öffnen.
- Formulieren Sie eine Commit-Nachricht um, die einen Tippfehler, eine fehlende Ticketnummer oder eine vage Zusammenfassung enthält.
- Falten Sie eine vergessene Änderung in den Commit, zu dem sie gehört, sodass jeder Commit für sich aufbaut.
- Ordnen Sie Commits neu an, sodass ein Refactor vor der Funktion landet, die davon abhängt.
- Löschen Sie einen Debug-Commit oder ein Experiment, das niemals den Hauptzweig erreichen sollte.
Auswählen, quetschen, reparieren, umformulieren, bearbeiten und löschen: die Rebase-Aktionen erklärt
Jede Zeile in einem interaktiven Rebase-Plan ist ein Commit plus eine Aktion. Dies sind diejenigen, die Sie täglich verwenden werden (die ToDo-Datei von Git enthält noch einige weitere für die Skripterstellung, wie zum Beispiel exec und break):
| Aktion | Geben Sie GitTree ein. | Was Git macht | Benutze es, um |
|---|---|---|---|
| wählen | p | Behält das Commit so bei, wie es ist. | Lassen Sie ein Commit in Ruhe (Standardeinstellung). |
| umformulieren | r | Behält die Änderungen bei und ermöglicht Ihnen das Schreiben einer neuen Nachricht. | Korrigieren Sie einen Tippfehler oder eine vage Zusammenfassung. |
| bearbeiten | e | Spielt den Commit erneut ab und stoppt dann, damit Sie ihn ändern können. | Teilen Sie einen Commit auf oder ändern Sie seine Dateien. |
| Kürbis | s | Verschmelzt den Commit mit dem obigen und kombiniert beide Nachrichten. | Treten Sie verwandten Commits bei und machen Sie sich Notizen. |
| Reparatur | f | Verschmilzt den Commit mit dem obigen und behält nur die frühere Nachricht. | Einen kleinen Fix leise unterheben. |
| Fixup -C | Aktionsmenü: „Reparatur, verwenden Sie seine Nachricht“ | Wie Fixup, behält aber stattdessen die Nachricht dieses Commits bei. | Ersetzen Sie die frühere Nachricht zusammen mit dem Fix. |
| fallen lassen | d | Belässt den Commit außerhalb der Verzweigung. | Entfernen Sie einen Debugging- oder experimentellen Commit. |
Die Reihenfolge ist wichtig und das Gegenteil von `git log`. Der Plan listet den ältesten Commit oben in der Reihenfolge der Wiedergabe auf, während git log und die meisten Commit-Diagramme den neuesten zuerst anzeigen. Ein Squash oder Fixup verschmilzt immer mit dem Commit direkt darüber, dem älteren. Wenn ein Squash ganz oben landet und nichts zum Folden hat, verweigert GitTree den Start, bis Sie ihn unter einen Commit verschieben, den Sie behalten.
Das Befehlszeilenäquivalent: git rebase -i
In der Befehlszeile benennen Sie das Commit direkt unter denen, die Sie ändern möchten: Zählen Sie von HEAD zurück oder verwenden Sie den Punkt, an dem Ihr Zweig main verlassen hat.
# rewrite the last 5 commits
git rebase -i HEAD~5
# rewrite everything since the branch left main, without moving its base
git rebase -i $(git merge-base main HEAD)Git öffnet Ihren Editor mit einer Aufgabenliste. Dies ist derselbe Plan wie der Screenshot weiter unten: Der zweite Commit wird in den ersten gequetscht und der vierte erhält eine neue Nachricht.
pick f2cd67d chore(deps): upgrade Next.js and React
squash 19a1104 ci: cache pnpm store and run tests in parallel
pick f52edc8 refactor(api): extract repository layer from handlers
reword 05dfac2 feat(api): rate limit public endpoints
pick bf2385e fix(web): focus trap in the invite dialogSpeichern und schließen Sie die Datei und Git beginnt mit der Wiedergabe. Es fragt nach der Squash-Nachricht und der umformulierten Nachricht und pausiert bei jedem edit-Schritt oder Konflikt, bei dem Sie fortfahren oder aufgeben:
git rebase --continue # after amending or resolving a conflict
git rebase --abort # stop and put the branch back where it wasEine GUI ändert, wie Sie den Plan schreiben, nicht, was Git damit macht. GitTree führt denselben Plan mit Git aus, das bereits auf Ihrem Computer installiert ist (Version 2.39 oder neuer), sodass die App und ein Terminal dieselben Commits erzeugen. Für die umfassenderen Kompromisse lesen Sie Git GUI vs. Befehlszeile.
So führen Sie ein interaktives Rebase in einer GUI durch: GitTree Schritt für Schritt
Schauen Sie sich den Zweig an und räumen Sie die Arbeitskopie auf
Schauen Sie sich den Zweig an, den Sie bereinigen möchten. Übernehmen oder speichern Sie nicht festgeschriebene Änderungen zuerst oder aktivieren Sie die Option, die sie für dieses Rebase zwischenspeichert und anschließend zurücklegt.
Öffnen Sie den Editor vom Basis-Commit aus
Klicken Sie im Commit-Diagramm mit der rechten Maustaste auf den Commit direkt unter dem ältesten, den Sie ändern möchten, und wählen Sie Interaktives Rebase der obigen Commits…. Um gleichzeitig zu einem anderen Zweig zu wechseln, klicken Sie mit der rechten Maustaste auf diesen Zweig und wählen Sie Interaktives Rebase Current Branch Onto This….
Wählen Sie für jedes Commit eine Aktion aus
Verwenden Sie das Menü in jeder Zeile oder fokussieren Sie eine Zeile und drücken Sie p, r, e, s, f oder d zum Auswählen, Umformulieren, Bearbeiten, Zusammendrücken, Korrigieren oder Ablegen.
Durch Ziehen oder Tastatur neu anordnen
Ziehen Sie eine Zeile an ihrem Ziehpunkt oder fokussieren Sie sie und drücken Sie Alt+Corporate oder Alt+↓, bis die Commits in der gewünschten Reihenfolge vorliegen.
Schreiben Sie die neuen Nachrichten
Eine Umformulierungszeile öffnet an Ort und Stelle ein Meldungsfeld. Jede komprimierte Gruppe erscheint unter der Liste mit ihrer kombinierten Nachricht und kann bearbeitet werden, sodass Sie den resultierenden Commit sehen, bevor Sie beginnen.
Überprüfen Sie die Optionen und starten Sie
Wählen Sie, ob Sie lokale Änderungen speichern, Zweige, die auf diese Commits verweisen (Update-Refs), verschieben und eine Korrektur veranlassen möchten! Commits (Autosquash). Bestätigen Sie, ob einige Commits bereits auf einer Fernbedienung vorhanden sind, und klicken Sie dann auf Start Rebase.
Fortfahren, Abbrechen oder Rückgängig machen
Wenn ein Schritt wegen einer Bearbeitung oder eines Konflikts angehalten wird, bietet das Banner „Rebase fortsetzen“ und „Rebase abbrechen“. Wenn das Rebase abgeschlossen ist, setzt „Undo“ den gesamten Zweig zurück.

So quetschen Sie Commits in einer Git-GUI
Die kurze Antwort auf die Frage, wie man Commits quetscht: Legen Sie sie nebeneinander, belassen Sie den ersten als Pick, markieren Sie den Rest als Squash oder Fixup und spielen Sie ihn erneut ab. GitTree bietet Ihnen drei Möglichkeiten, dorthin zu gelangen.
Zerkleinern Sie eine Gruppe von Commits im Rebase-Editor
Öffnen Sie den Editor über den Commit unterhalb der Gruppe, stellen Sie den ersten Commit auf „pick“ und die anderen auf „squash“ oder auf „fixup“ ein, wenn Sie deren Nachrichten nicht möchten. Ziehen Sie vereinzelte Commits an ihren Platz, wenn die Gruppe nicht zusammenhängend ist. GitTree zeigt eine Vorschau jeder Gruppe an, die einen Kürbis als Commit enthält, zu dem er werden wird, mit der kombinierten Nachricht in einem Feld, das Sie bearbeiten können.
Wählen Sie Commits im Diagramm aus und wählen Sie Squash Commits
Für einen schnellen Squash wählen Sie zwei oder mehr aufeinanderfolgende Commits des aktuellen Zweigs im Diagramm aus, klicken mit der rechten Maustaste und wählen Squash Commits. GitTree führt die Rebase für Sie aus und „Undo“ kann die einzelnen Commits zurücksetzen. Das gleiche Menü schreibt einzelne Commits in einem Schritt um: Commit-Nachricht bearbeiten…, Commit löschen…, Commit nach oben verschieben und Commit nach unten verschieben. Diese Verknüpfungen funktionieren bei Commits, die sich noch nicht auf einer Fernbedienung befinden; Verwenden Sie für Push-Commits den Editor, der Sie zunächst zur Bestätigung auffordert.
Squash, wenn Sie die Pull-Anfrage zusammenführen
Wenn Ihr Team einen Commit pro Pull-Anfrage behält, müssen Sie den Branch möglicherweise überhaupt nicht neu schreiben: Die Pull-Request-Ansicht von GitTree kann mit Squash zusammengeführt werden, und Ihr lokaler Branch bleibt unverändert.

Fixup-Commits und Autosquash: Korrigieren Sie ein altes Commit, ohne es manuell neu anzuordnen
Übertragen Sie während der Arbeit jede kleine Korrektur als Korrektur des zugehörigen Commits. Git betitelt es mit fixup! <original title>. Später verschiebt ein interaktiver Rebase mit Autosquash jedes Fixup direkt unter sein Ziel und markiert es als Fixup, sodass Sie nur noch die Liste überprüfen und starten müssen.
# record a correction for an earlier commit
git commit --fixup=05dfac2
# correct the commit and replace its message too
git commit --fixup=amend:05dfac2
# later: fold every fixup! and amend! commit into its target
git rebase -i --autosquash main
# turn autosquash on for every interactive rebase
git config --global rebase.autoSquash trueFühren Sie in GitTree diese Befehle im integrierten Terminal aus, das unter dem Diagramm angedockt ist, oder geben Sie fixup!, ein Leerzeichen und den ursprünglichen Titel in das Commit-Meldungsfeld ein. Git gleicht Korrekturen nach Titel ab, sodass beide denselben Commit erstellen. Mit dem Arrange fixup!, Squash! und ändern! Wenn Sie die Option „Commits“ aktivieren, wird der Editor bereits arrangiert geöffnet und Sie sehen genau das, was Git ausführt.
Ein amend!-Commit wird im Plan zu fixup -C („Fixup, benutze seine Nachricht“ in GitTree): seine Änderungen werden eingefügt und seine Nachricht ersetzt die des Ziels. Gemäß der Git-Commit-Dokumentation ändert keine der beiden Arten, wer den ursprünglichen Commit verfasst hat.
Ist interaktives Rebase sicher? Rückgängigmachen, Reflog und Force-with-Lease
Ein Rebase löscht die alten Commits nicht sofort: Sie bleiben vom Reflog aus erreichbar, bis die Garbage Collection von Git viel später nicht erreichbare Objekte löscht. Die wirklichen Risiken bestehen darin, den Überblick über die alte Filiale zu verlieren und die Arbeit eines Kollegen auf der Fernbedienung zu überschreiben.
Machen Sie einen abgeschlossenen Rebase rückgängig
GitTree erstellt vor jedem Rebase einen Snapshot des Branchs, so dass Rückgängig in der Symbolleiste ihn mit einem Klick zurücksetzt, einschließlich anderer Branches, die das Rebase mit update-refs verschoben hat, solange der Branch seitdem nichts verschoben wurde. So machen Sie einen Git-Reset, ein Rebase oder ein Commit rückgängig deckt den Rest dieses Sicherheitsnetzes ab. Auf der Befehlszeile:
# still in the middle of the rebase
git rebase --abort
# already finished: go back to the tip from before the rebase
git reflog show --date=relative
git reset --hard ORIG_HEADGit setzt ORIG_HEAD auf den alten Tipp, wenn ein Rebase startet, aber ein git reset-Lauf während des Rebase (um beispielsweise einen Commit aufzuteilen) verschiebt ihn. Unmittelbar nach dem Rebase zeigt @{1}, die vorherige Position des aktuellen Zweigs, immer noch auf den alten Tipp, sodass auch git reset --hard @{1} funktioniert. git reset --hard verwirft nicht festgeschriebene Änderungen, also schreiben Sie sie zuerst fest oder speichern Sie sie.
Schreiben Sie Commits neu, die Sie bereits gepusht haben
GitTree kennzeichnet Commits, die sich bereits auf einer Fernbedienung befinden, mit „Auf einer Fernbedienung“ und fordert Sie zur Bestätigung auf, bevor Sie sie neu schreiben. Danach wird ein normaler Stoß verweigert, sodass ein Kraftstoß erforderlich ist. Verwenden Sie das Lease-Formular, das den Remote-Zweig nur überschreibt, wenn er immer noch auf die Stelle zeigt, an der Sie ihn zuletzt gesehen haben:
git push --force-with-lease
# safer when something fetches in the background
git push --force-with-lease --force-if-includesEin Hintergrundabruf kann Ihren Remote-Tracking-Zweig aktualisieren und die Lease schwächen, daher schlägt die Git-Push-Dokumentation das Hinzufügen von --force-if-includes vor. In GitTree verwendet ein Force-Push immer --force-with-lease, angeheftet an den Remote-Tipp, der bei Ihrer Bestätigung angezeigt wird, und dieser Tipp wird lokal unter refs/ogt/trash gespeichert, sodass die Commits, die er von der Remote entfernt, nicht verloren gehen. Durch Rückgängigmachen kann ein Force-Push nicht rückgängig gemacht werden, da dadurch die Fernbedienung geändert wurde.
Wenn ein Schritt stoppt: Änderungen und Konflikte
Ein edit-Schritt oder ein Commit, der nicht mehr ordnungsgemäß angewendet wird, pausiert den Rebase. GitTree zeigt den Fortschritt des Plans und ein Banner zum Fortfahren oder Abbrechen an. Konflikte werden im Drei-Wege-Editor geöffnet, siehe Zusammenführungskonflikte in einer GUI lösen. Während einer Rebase vertauscht Git die Seiten einer Zusammenführung: „unser“ ist der Zweig, auf den Sie rebasieren, und „ihrer“ ist Ihr eigener Commit, daher bezeichnet GitTree sie als „rebasing on“ und „Ihr Commit“. In der Lektion Eine aktive Operation fortsetzen, überspringen oder abbrechen wird jede Auswahl geübt. Um einen einzelnen Commit zu kopieren, anstatt einen Zweig neu zu schreiben, siehe Cherry-Pick.
Tipps für einen sauberen Commit-Verlauf vor einem Pull-Request
- Sorgen Sie dafür, dass jeder Commit seine Tests einzeln erstellt und besteht, und halten Sie nicht zusammenhängende Änderungen getrennt: einen Commit für den Refactor, einen für die Funktion.
- Rebasieren Sie auf die neueste Version
main, bevor Sie die Pull-Anfrage öffnen, damit Prüfer nur Ihre Änderungen sehen. - Arbeiten Sie mit gestapelten Ästen? Aktivieren Sie update-refs, damit die auf Ihrem Zweig erstellten Zweige mit den neu geschriebenen Commits verschoben werden.
- Wenn der Bereich ein Merge-Commit enthält, zeigt GitTree es an, schreibt es aber nicht neu; Verwenden Sie für diesen Fall
git rebase -i --rebase-merges. - Überprüfen Sie das Ergebnis im Commit-Diagramm, bevor Sie pushen, und lassen Sie Ihre eigene KI-Codierungs-CLI Nachrichten entwerfen, wie in KI-Commit-Nachrichten mit Claude Code und Codex.
- Üben Sie zunächst an einem Wegwerf-Repository mit der kostenlosen Lektion Unveröffentlichte Arbeit auf eine neue Basis umstellen.
GitTree verfügt über einen kostenlosen Plan, der alle Git-Funktionen, einschließlich privater Repositories, auf macOS, Windows und Linux in English and Arabic abdeckt; Nour, der KI-Assistent, wird mit GitTree Pro geliefert (siehe Preise). Es benötigt Git 2.39 oder neuer und ein GitTree-Konto, um sich anzumelden. Laden Sie es von der Download-Seite herunter oder vergleichen Sie zuerst die besten Git-GUI-Clients.
Häufig gestellte Fragen
Was ist der Unterschied zwischen Squash und Fixup in Git Rebase?
Beide verschmelzen einen Commit mit dem darüber liegenden im Rebase-Plan, sodass die beiden Änderungssätze in einem einzigen Commit enden. Squash kombiniert beide Commit-Nachrichten und ermöglicht Ihnen die Bearbeitung des Ergebnisses, während Fixup nur die Nachricht des früheren Commits behält und die spätere verwirft. Fixup -C macht das Gegenteil und behält die spätere Nachricht.
Wie kann ich meine letzten 3 Commits unterdrücken?
Führen Sie in der Befehlszeile git rebase -i HEAD~3 aus, belassen Sie die erste Zeile als „pick“, ändern Sie die anderen beiden in „squash“ oder „fixup“, speichern Sie die kombinierte Nachricht und bearbeiten Sie sie. Klicken Sie in GitTree mit der rechten Maustaste auf den vierten Commit oben in Ihrem Zweig, wählen Sie „Interaktives Rebase der Commits oben“, stellen Sie die beiden neueren Commits auf „squash“ ein und klicken Sie auf Start Rebase. Wenn sich die drei Commits noch nicht auf einer Fernbedienung befinden, können Sie sie auch auswählen und Squash Commits wählen.
Wie mache ich einen interaktiven Rebase rückgängig?
Wenn das Rebase noch läuft, stoppen Sie es mit git rebase --abort oder der Schaltfläche „Rebase abbrechen“ im Banner von GitTree. Wenn der Vorgang bereits abgeschlossen ist, verwenden Sie „Rückgängig“ in GitTree, um den vor dem Rebase erstellten Snapshot wiederherzustellen, oder führen Sie git reset --hard ORIG_HEAD in der Befehlszeile aus. Das Reflog listet jede frühere Position des Zweigs auf, falls Sie eine ältere benötigen.
Ist es sicher, bereits von mir gepushte Commits mit einem Rebase zu versehen?
Es ist sicher in einem Zweig, den nur Sie verwenden, solange Sie mit git push --force-with-lease pushen, das sich weigert, Commits zu überschreiben, die Sie nicht gesehen haben. In einem gemeinsam genutzten Zweig zwingt das Umschreiben des Verlaufs alle anderen dazu, ihre Kopien zu reparieren. Stimmen Sie sich also zuerst mit Ihrem Team ab oder löschen Sie sie, wenn die Pull-Anfrage zusammengeführt wird, anstatt den Zweig neu zu schreiben.
Unterstützt GitTree Fixup! Commits und Autosquash?
Ja. Commits, deren Titel mit fixup!, Squash! beginnen oder ändern! kann automatisch angeordnet werden, wenn der interaktive Rebase-Editor geöffnet wird, entweder für ein einzelnes Rebase oder standardmäßig über eine Einstellung, die Ihrer rebase.autoSquash-Einstellung folgen kann. Sie sehen immer noch die angeordnete Liste, bevor etwas ausgeführt wird, und Git führt genau diese Liste aus.
Kann ich ein interaktives Rebase ohne die Befehlszeile für macOS, Windows und Linux durchführen?
Ja. Der interaktive Rebase-Editor von GitTree funktioniert bei macOS, Windows und Linux auf die gleiche Weise: Auswählen, Umformulieren, Bearbeiten, Stauchen, Korrigieren und Ablegen, mit Drag-and-Drop oder Neuordnung über die Tastatur und Rückgängigmachen. Die App verfügt über einen kostenlosen Plan, der alle Git-Funktionen abdeckt (Nour, der KI-Assistent, wird mit GitTree Pro geliefert), mit einem GitTree-Konto funktioniert und das bereits auf Ihrem Computer installierte Git, Version 2.39 oder höher, verwendet.
Sollte ich mit einem interaktiven Rebase oder mit einem Squash-Merge quetschen?
Verwenden Sie eine interaktive Rebase, wenn mehrere sinnvolle Commits aufgeräumt und in einer sinnvollen Reihenfolge erhalten bleiben sollen oder wenn Prüfer einen Pull-Request Commit für Commit lesen. Verwenden Sie eine Squash-Merge, wenn die gesamte Pull-Anfrage als ein Commit im Hauptzweig landen soll: Dadurch bleibt Ihr eigener Zweig unberührt und es ist kein erzwungener Push erforderlich.
Quellen
Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 22. Oktober 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.