NCA Social Media
Aktualisiert:
Autor:
Roland Golla
Grünes isometrisches Terminal Git Interactive Rebase mit Commits NCA 2026

Was ist Git Interactive Rebase?

Git Interactive Rebase ist ein Werkzeug in Git, mit dem Entwickler die Commit Historie eines Branches gezielt umschreiben, bevor sie in einen geteilten Zweig wie main oder develop gelangt. Statt eine chaotische Abfolge von WIP Commits, Tippfehler Korrekturen und Zwischenständen zu mergen, lässt sich mit git rebase -i eine saubere, logisch nachvollziehbare Commit Kette formen.

Für PHP Entwickler ist Interactive Rebase vor allem in Feature Branches und bei grossen Refactorings relevant, wenn etwa mit Rector automatisierte Umbauten oder mit PHPStan Typsicherheits Verbesserungen durchgeführt werden. Ein klares Git Log ist die Basis für effizientes Code Review, schnelles Debugging mit git bisect und verlässliche Rollbacks.

Im Unterschied zum normalen git rebase, der Commits einfach automatisch auf einen neuen Basis Commit anwendet, öffnet der interaktive Modus einen Editor mit einer Todo Liste. Dort entscheidet der Entwickler Commit für Commit, was passieren soll: behalten, zusammenfassen, umbenennen, aufteilen oder verwerfen.

CYPRESS.IO Ambassador und IT Consultant für QA Engenieering und Qualität in PHP Projekten.

Erreichen Sie unsere PHP Consultant Spezialisten

Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.

Wie funktioniert Interactive Rebase?

Ein Interactive Rebase startet mit der Angabe, wie viele Commits bearbeitet werden sollen. Üblich ist ein Bereich ab einem bestimmten Basis Commit oder eine feste Anzahl letzter Commits per HEAD Referenz.

Code:
          

# Die letzten fünf Commits interaktiv bearbeiten
git rebase -i HEAD~5

# Alle Commits seit dem Branch main interaktiv bearbeiten
git rebase -i main

# Ab einem bestimmten Commit Hash
git rebase -i abc1234

Git öffnet daraufhin den konfigurierten Editor mit einer Todo Liste. Jede Zeile entspricht einem Commit, beginnend mit dem ältesten. Vor jedem Commit steht ein Kommando, standardmässig pick.

Code:
          

pick m2n3o4p Initial feature implementation
pick i9j0k1l WIP start validation
pick e5f6g7h Add validation
pick a1b2c3d Fix tests
pick f7e8d9c WIP

# Rebase abc1234..HEAD onto main (5 commands)

Durch Ändern der Kommandos und der Reihenfolge der Zeilen steuert der Entwickler, was mit jedem Commit geschieht. Nach dem Speichern und Schliessen des Editors spielt Git die Commits Schritt für Schritt neu ab und wendet die Anweisungen an. Bei Konflikten pausiert der Rebase, bis manuelle Auflösung erfolgt.

Die wichtigsten Rebase Commands im Überblick

Interactive Rebase kennt eine feste Anzahl an Kommandos, die jedes für sich ein mächtiges Werkzeug darstellen. Das Verständnis dieser sechs Commands deckt rund 95 Prozent aller Praxisfälle ab.

  • pick: Commit unverändert übernehmen. Der Default.
  • reword: Commit übernehmen, aber die Commit Nachricht im Editor neu schreiben.
  • edit: Rebase pausiert vor dem Commit, Änderungen möglich per git commit amend oder zum Splitten in mehrere Commits.
  • squash: Commit mit dem vorherigen zusammenfassen, beide Nachrichten werden im Editor kombiniert.
  • fixup: Wie squash, aber die Nachricht des aktuellen Commits wird verworfen. Perfekt für Fix Typo Commits.
  • drop: Commit komplett entfernen, zum Beispiel temporäre Debug Logs.

Alle Kommandos lassen sich in einer einzigen Todo Liste frei kombinieren. Zusätzlich existieren exec für das Ausführen beliebiger Shell Kommandos zwischen Commits, etwa für automatisierte Tests, sowie break für manuelle Pausen.

Code:
          

pick m2n3o4p Initial feature implementation
fixup f7e8d9c WIP
reword i9j0k1l WIP start validation
squash e5f6g7h Add validation
fixup a1b2c3d Fix tests

Typische Anwendungsfälle in PHP Projekten

Interactive Rebase ist weit mehr als ein Aufräumwerkzeug vor dem Pull Request. In Symfony, Laravel und Sulu Projekten entstehen regelmässig Situationen, in denen eine saubere Commit Historie den Unterschied zwischen schnellem Code Review und stundenlanger Diskussion ausmacht.

Squashen von WIP Commits: Während der Feature Entwicklung sind kleine Zwischenstände hilfreich, im Pull Request aber störend. Per fixup lassen sich fünf oder zehn Zwischen Commits auf einen sauberen Feature Commit reduzieren, ohne dass der Code Reviewer durch Debug Logs und Rücksetzer navigieren muss.

Reordern von Commits: Ein Bug Fix, der während der Feature Arbeit auffällt und direkt committed wurde, gehört logisch vor den eigentlichen Feature Commit. Interactive Rebase erlaubt das einfache Vertauschen durch Umsortieren der Zeilen in der Todo Liste.

Splitten grosser Commits: Wenn ein Commit Refactoring, Bug Fix und neues Feature vermischt, leidet git blame und die Reviewbarkeit. Mit edit und git reset HEAD^ lässt sich ein solcher Commit in mehrere atomare Commits aufteilen.

Rewording von Commit Nachrichten: Commit Nachrichten während der Arbeit sind oft Notizen an das eigene Ich. Vor dem Pull Request lohnt sich der Aufwand, sie in aussagekräftige, issue referenzierte Nachrichten umzuschreiben. Das verbessert git log, git blame und spätere Bisect Suchen.

Entfernen unerwünschter Commits: Temporäre var_dump Aufrufe, auskommentierter Test Code oder versehentlich committete .env Dateien lassen sich per drop aus der Historie entfernen, bevor sie in das geteilte Repository gelangen.

Die goldene Regel: Niemals gepushte History rebasen

Die wichtigste Regel im Umgang mit Interactive Rebase lautet: Nur private, noch nicht geteilte Commits umschreiben. Sobald ein Branch auf ein Remote gepusht wurde und andere Entwickler darauf aufgebaut haben, führt ein Rebase zu zerstörter Historie für das gesamte Team.

Der Grund: Interactive Rebase erzeugt neue Commit Hashes. Für Git sind die alten und neuen Commits zwei verschiedene Objekte, selbst wenn ihr Inhalt identisch ist. Wer auf Basis der alten Commits gearbeitet hat, bekommt beim nächsten Pull widersprüchliche Historien und muss manuell aufräumen.

Für Solo Feature Branches, die nur der eigenen Synchronisation mit dem Remote dienen, ist ein Rebase nach dem Push vertretbar. Entscheidend ist dann der Einsatz von force with lease statt force.

Code:
          

# UNSICHER, überschreibt blind
git push --force

# SICHER, bricht ab wenn jemand anderes gepusht hat
git push --force-with-lease origin feature

force with lease prüft vor dem Überschreiben, ob der Remote Branch noch auf dem Stand steht, den Git lokal erwartet. Hat ein Kollege zwischenzeitlich gepusht, schlägt der Push fehl und schützt die Arbeit des Kollegen.

The key rule is simple: only rebase commits that have not been pushed to shared branches.

Nawaz Dhandala, Founder OneUptime – OneUptime Blog

Interactive Rebase im PHP Team Workflow mit NCA

In Legacy PHP Projekten sammeln sich über Jahre chaotische Commit Historien an. Ein Symfony 4 auf Symfony 7 Upgrade mit Rector, ein Austausch des Test Frameworks von PHPUnit zu Pest oder die Migration zu FrankenPHP erzeugen schnell Dutzende kleiner Commits, die ohne Rebase kaum nachvollziehbar sind.

NCA unterstützt PHP Teams dabei, Interactive Rebase als festen Bestandteil des Entwicklungsprozesses zu etablieren. Typische Beratungsschwerpunkte sind:

  • Git Workflows definieren: Feature Branches mit Rebase vor Merge, Trunk Based Development oder GitFlow, passend zur Teamgrösse.
  • Pre Commit Hooks mit GrumPHP koppeln, damit Code Style, PHPStan und Tests vor jedem Commit laufen.
  • CI Pipelines mit PHP Deployer und automatisierter Qualitätssicherung aufbauen, sodass Rebase Workflows und Deployments Hand in Hand gehen.
  • Hands on Schulungen zu Rebase, force with lease und Konflikt Auflösung für gemischte Senior und Junior Teams.

Wer seine PHP Entwicklung auf modernes Niveau heben will, profitiert von einer sauberen Git Historie als Fundament. Eine kostenlose Erstberatung zu Git Workflows und PHP Qualitätssicherung in Ihrem Team lässt sich direkt mit Roland Golla vereinbaren: roland@nevercodealone.de oder telefonisch unter +49 176 24747727.

Lass uns sprechen

Finde das passende Angebot für dein Projekt

Anfrage-Konfiguration

Starten Sie Ihre Anfrage

Projektart
Infos
Nachricht

Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.

CORE EXPERTISE

Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.

BFSG COMPLIANT

Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.

ENTERPRISE READY

Häufige Fragen zu Git Interactive Rebase

Die folgenden Fragen fassen die häufigsten Stolpersteine rund um Interactive Rebase zusammen, die in PHP Teams regelmässig auftauchen. Vom Team Workflow über Konflikt Auflösung bis zur Integration in Continuous Integration bündelt dieser Abschnitt das Wissen, das im Alltag zählt.

Was ist Git Interactive Rebase 2026?

Git Interactive Rebase ist der Modus des git rebase Befehls, der eine bearbeitbare Todo Liste mit allen betroffenen Commits öffnet. Entwickler entscheiden Commit für Commit, ob dieser behalten, zusammengefasst, umbenannt, aufgeteilt oder verworfen wird. Das Ergebnis ist eine saubere, logisch aufgebaute Commit Historie für den Pull Request.

Wann sollte man Interactive Rebase in PHP Projekten 2026 verwenden?

Immer dann, wenn ein Feature Branch vor dem Merge in main oder develop aufgeräumt werden soll. Besonders sinnvoll nach Rector Refactorings, PHPStan Upgrades oder grösseren Symfony Migrationen, bei denen viele kleine Zwischen Commits entstehen. Für Solo Branches ohne geteilte Historie ist Rebase das Werkzeug der Wahl.

Was ist der Unterschied zwischen squash und fixup 2026?

Squash fasst zwei Commits zusammen und öffnet einen Editor, um beide Commit Nachrichten zu einer neuen zu kombinieren. Fixup fasst ebenfalls zusammen, verwirft dabei aber die Commit Nachricht des gefolgerten Commits komplett. Fixup eignet sich perfekt für kleine Korrekturen wie Fix Typo oder WIP Commits.

Wie vermeidet man Merge Konflikte beim Interactive Rebase 2026?

Durch häufiges Rebasen des Feature Branches gegen die aktuelle main. Je kleiner die Distanz zwischen Branch und Basis, desto seltener und kleiner die Konflikte. Atomare Commits mit klar abgegrenzten Änderungen reduzieren zusätzlich die Konflikt Wahrscheinlichkeit. Tools wie git rerere merken sich einmal gelöste Konflikte und wenden sie automatisch wieder an.

Welche Commands kennt Git Interactive Rebase 2026?

Die sechs Kernkommandos sind pick, reword, edit, squash, fixup und drop. Ergänzt durch exec für Shell Kommandos zwischen Commits und break für manuelle Pausen. Pick übernimmt einen Commit unverändert, reword ändert nur die Nachricht, edit pausiert den Rebase für manuelle Eingriffe.

Warum niemals öffentliche Branches rebasen?

Interactive Rebase erzeugt neue Commit Hashes. Wer auf Basis der alten Commits gearbeitet hat, bekommt beim nächsten Pull zwei divergierende Historien. Das führt zu chaotischen Merge Konflikten und potenziell verlorenen Änderungen. Die goldene Regel: Nur private, noch nicht geteilte Commits mit Interactive Rebase umschreiben.

Wie bricht man einen Rebase sicher ab?

Mit git rebase --abort wird der Rebase gestoppt und der Branch auf den Ausgangszustand zurückgesetzt. Alle aufgelösten Konflikte gehen verloren, aber der Branch bleibt intakt. Bei laufendem Rebase gibt git status jederzeit Auskunft über den aktuellen Stand und die nächsten Schritte.

Was ist force with lease und wann wird es benötigt?

Force with lease ist eine sichere Variante von git push force. Sie überschreibt den Remote Branch nur, wenn er noch im erwarteten Zustand ist. Pusht ein Kollege zwischenzeitlich, schlägt der Push fehl. Nach einem Interactive Rebase auf einem gepushten Branch ist force with lease der Standard statt eines blinden force.

Wie splittet man einen grossen Commit in mehrere kleine?

Im Interactive Rebase den Commit mit edit markieren. Sobald der Rebase pausiert, git reset HEAD^ ausführen, um die Änderungen zu entstagen. Dann einzelne Teile per git add und git commit erneut als separate Commits einchecken. Mit git rebase --continue wird der Rebase abgeschlossen.

Kann man einen Rebase rückgängig machen?

Ja, über git reflog. Der Reflog protokolliert alle HEAD Bewegungen, auch solche, die durch Rebase entstehen. Mit git reset --hard HEAD@{N} lässt sich der Branch auf einen Zustand vor dem Rebase zurücksetzen. Der Reflog ist das wichtigste Sicherheitsnetz im Umgang mit Rebase.

Wie konfiguriert man den Editor für Interactive Rebase?

Per git config --global core.editor wird der Standard Editor gesetzt. Empfehlenswert sind VS Code mit dem Wait Flag, Vim oder Nano. Der Wait Flag ist wichtig, damit Git auf das Speichern der Todo Liste wartet, bevor der Rebase startet. Ohne Wait Flag scheitert der Rebase mit einem Fehler zur fehlenden Todo Datei.

Was bedeutet autosquash in Git?

Mit git commit --fixup oder --squash und anschliessendem git rebase -i --autosquash ordnet Git automatisch Commits zu ihren Vorgängern zu. Das spart manuelles Sortieren der Todo Liste und ist perfekt für den Workflow, bei dem während der Entwicklung kleine Korrekturen gezielt als Fixup markiert werden.