Git Interactive Rebase 2026
Git Interactive Rebase erklärt: Commits squashen, editieren, reordern, Best Practices für saubere Git Historie in PHP Projekten mit NCA 2026
Mehr erfahren
Jujutsu, aufgerufen als jj auf der Kommandozeile, ist eine moderne, Git kompatible Versionskontrolle, die 2026 schnell an Verbreitung gewinnt. Das Tool wurde von Martin von Zweigbergk bei Google gestartet, ist in Rust geschrieben und unter Apache 2.0 Lizenz veroeffentlicht. Google nutzt jj intern, der offizielle Code liegt auf GitHub unter jj-vcs und hat bereits ueber 27.000 Sterne gesammelt.
Der entscheidende Punkt fuer PHP Teams: jj arbeitet direkt auf bestehenden Git Repositories. Es liest und schreibt das gleiche .git Verzeichnis, erzeugt echte Git Commits und kann parallel zu Git genutzt werden. Kollegen im Team muessen nichts aendern, GitLab, GitHub und CI Pipelines funktionieren unveraendert weiter. Wer will, nutzt jj lokal als bessere Oberflaeche auf dem Symfony Projekt, der Rest des Teams bleibt bei git.
Jujutsu entfernt konzeptionell einige bekannte Schmerzpunkte von Git: Es gibt keinen Staging Bereich (kein git add), die Working Copy ist selbst ein Commit, und jede Aktion ist ueber das Operation Log rueckgaengig machbar. Im Vibe Coding Kontext mit KI Agents macht das einen enormen Unterschied, gilt aber auch fuer klassische PHP Projekte mit viel Rebase und Cherry Pick Arbeit.
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.
PHP Projekte leben von sauberer Historie. Composer Updates, Doctrine Migrations, Rector Refactorings und Symfony Major Upgrades erzeugen viele kleine, voneinander abhaengige Commits. Wer regelmaessig mit Interactive Rebase, Squash Merges oder Stacked Pull Requests arbeitet, kennt die Situationen, in denen Git unbequem wird.
Jujutsu loest diese typischen PHP Team Probleme auf mehreren Ebenen:
Fuer Teams, die mit KI Coding Agents wie Claude Code oder Cursor an PHP Codebases arbeiten, ist der Snapshot Mechanismus besonders wertvoll. Agents machen viele, teils experimentelle Aenderungen. Mit jj ist jede Zwischenstufe wiederherstellbar, ohne dass das Team im Hauptrepository etwas merkt.
jj laeuft auf macOS, Linux und Windows. Auf dem Mac ueber Homebrew, auf Linux per Cargo oder paketiert, auf Windows ueber Scoop oder winget. Die Installation beruehrt bestehende Git Konfigurationen nicht.
# macOS
brew install jj
# Linux / Windows mit Rust Toolchain
cargo install --locked --bin jj jj-cli
# Version pruefen
jj --version
Im bestehenden Symfony oder Laravel Projekt wird jj colocated eingerichtet. Das bedeutet, jj und git arbeiten parallel im selben Verzeichnis auf der gleichen .git Instanz. Teamkollegen sehen keinen Unterschied.
# In das PHP Projekt wechseln
cd my-symfony-app
# jj colocated initialisieren
jj git init --colocate
# User und Mail konfigurieren (einmalig)
jj config set --user user.name "Roland Golla"
jj config set --user user.email "roland@nevercodealone.de"
# Status anzeigen
jj st
# Log anzeigen
jj log
Ab jetzt kann das Team mit git weiterarbeiten, waehrend man selbst jj Befehle nutzt. Pushes landen als echte Git Commits auf GitLab oder GitHub, Merge Requests funktionieren wie gewohnt. Die NCA Kollegen nutzen genau diesen Weg fuer Sulu CMS, Symfony und Shopware Projekte.
Wer mit Git Interactive Rebase vertraut ist, versteht jj schnell: Vieles, was in Git ein bewusster, oft angstbesetzter Eingriff ist, ist in jj der Normalfall. Die zentralen Unterschiede:
Fuer PHP Teams, die Feature Branches, CI Pipelines und Code Review ueber GitLab oder GitHub fahren, aendert sich im Remote Workflow nichts. Jeder jj push ergibt einen ganz normalen Git Push. Der Gewinn liegt in der lokalen Arbeit.
Der Umstieg ist ueberschaubar. Wer Git kennt, ist nach wenigen Tagen mit jj produktiv. Die folgenden Kommandos decken den Alltag in PHP Projekten ab:
# Status und Log
jj st # Aktuellen Zustand zeigen
jj log # Commit Graph anzeigen
jj log -r 'main..@' # Nur eigene Changes seit main
# Neuen Change anlegen (entspricht git commit, aber vor der Arbeit)
jj new -m "feat: Symfony 7.3 Upgrade vorbereiten"
# Change beschreiben (Message nachtraeglich setzen)
jj describe -m "fix: Doctrine Migration korrigiert"
# Arbeit an einem frueheren Change fortsetzen
jj edit pqomwrlk # Change per ID bearbeiten
# Rebase (vereinfacht)
jj rebase -d main # Aktuellen Stack auf main rebasen
# Bookmark setzen und pushen
jj bookmark create feat/upgrade-73
jj git push --bookmark feat/upgrade-73
# Fetch von origin
jj git fetch
# Operation Log: alles sehen, alles rueckgaengig machen
jj op log # Alle Operationen zeigen
jj op restore <operation-id> # Zu einem frueheren Zustand zurueckkehren
jj undo # Letzte Operation rueckgaengig
Besonders nuetzlich im PHP Alltag: jj split trennt einen Change in mehrere Teile auf, jj squash fasst Changes zusammen, und jj abandon verwirft einen Change, ohne die Historie zu beschaedigen. Alle diese Aktionen rebasen abhaengige Changes automatisch.
Bei aktiveren Repos wie der Monolith Anwendung bin ich oft in die Situation gekommen, denselben Merge Konflikt immer wieder zu loesen. jj ist mit diesen Situationen bisher deutlich besser umgegangen.
Der produktive Einsatz von Claude Code, Cursor oder anderen Coding Agents in PHP Projekten hat einen wunden Punkt: Die Agents machen viele, kaskadierende Aenderungen, komprimieren ihren Kontext und koennen dabei Arbeit verlieren oder ueberschreiben. Git allein reicht als Sicherheitsnetz nicht aus.
Mit jj laeuft der Agent in einem Netz aus automatischen Snapshots. Der typische Workflow:
Der Anthony Panozzo Blog Post aus November 2025 beschreibt genau diesen Pattern: jj wird zum Sicherheitsnetz fuer KI Agents, weil der Snapshot Mechanismus bei jedem Befehl greift. Wer taeglich mit Vibe Coding und PHP arbeitet, bekommt mit jj eine robustere Arbeitsbasis.
Der Charme von jj fuer deutsche Agenturen und PHP Produktteams liegt in der Null Risiko Einfuehrung. Es braucht keine zentrale Entscheidung, keine GitLab Migration, keine CI Anpassung. Einzelne Entwickler koennen jj ausprobieren, Erfahrungen sammeln und die Praxis intern weiterempfehlen. Fuer Teams, die Symfony, Shopware, Sulu CMS oder Laravel Codebases pflegen, bedeutet das: kein technisches Risiko bei gleichzeitig deutlich besserer lokaler Arbeitsqualitaet.
Wichtig fuer den produktiven Einsatz: jj ist noch pre 1.0. Die Syntax entwickelt sich, der Release Takt ist hoch. Fuer Projekte mit strengen Stabilitaetsanforderungen empfiehlt sich, die jj Version im Team zu pinnen und ueber einen zentralen Installationsweg zu verteilen. Die Git Kompatibilitaet garantiert: Selbst wenn jj morgen eingestellt wuerde, bleibt das Repository ein normales Git Repository.
NCA begleitet PHP Teams bei der Einfuehrung moderner Entwickler Tools. Ob Symfony Upgrades, Rector Refactorings, Sulu CMS Projekte oder der Aufbau von Vibe Coding Workflows mit Claude Code: Wir sorgen dafuer, dass das Team produktiv bleibt und die Codebase gesund ist. Kontakt: roland@nevercodealone.de oder +49 176 24747727.
Finde das passende Angebot für dein Projekt
Anfrage-Konfiguration
Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Anfrage-Konfiguration
Wähle die Expertise, die dein Projekt jetzt am dringendsten benötigt.
Die wichtigsten Fragen rund um Jujutsu jj fuer PHP Entwickler, Teams und DevOps Verantwortliche im Jahr 2026.
Jujutsu (jj) ist eine Git kompatible Versionskontrolle, die 2026 schnell an Verbreitung gewinnt. Sie wurde bei Google gestartet, ist in Rust geschrieben und arbeitet direkt auf bestehenden Git Repositories. Entwickler nutzen sie als bessere lokale Oberflaeche, waehrend das Team bei Git bleibt.
Ja, vollstaendig. jj liest und schreibt das gleiche .git Verzeichnis, erzeugt echte Git Commits und funktioniert mit GitHub, GitLab, Bitbucket und jeder CI Pipeline. Teamkollegen muessen nichts aendern, es braucht keine Server Migration.
Weil PHP Projekte viele kleine, abhaengige Commits haben (Composer, Doctrine, Rector). jj loest das automatisch: stabile Change IDs, automatisches Rebasen abhaengiger Changes und ein Operation Log fuer Undo auf Repository Ebene.
Auf macOS mit brew install jj. Auf Linux mit cargo install --locked --bin jj jj-cli oder ueber das Distro Paket. Windows Nutzer installieren ueber Scoop oder winget. Die Installation beruehrt bestehende Git Konfigurationen nicht.
Mit jj git init --colocate im Projektverzeichnis. jj arbeitet dann parallel zu Git auf derselben .git Instanz. Das Team merkt nichts, Pushes laufen als normale Git Commits auf GitLab oder GitHub.
Das Operation Log ist eine Historie aller Aktionen auf dem Repository. jj op log zeigt jede Operation, jj op restore macht jede Aktion rueckgaengig. Ein verunglueckter Rebase oder ein versehentliches Loeschen sind damit kein Datenverlust mehr.
Ein Commit Hash aendert sich, sobald der Commit umgeschrieben wird (Rebase, Amend). Eine Change ID bleibt stabil, auch ueber Rebases hinweg. Dadurch kann man abhaengige Changes bearbeiten, ohne laufend IDs nachzupflegen.
Bookmarks sind Zeiger auf Changes, die sich bei Rebases automatisch mitbewegen. Sie funktionieren wie Git Branches, zwingen aber nicht zur fruehen Benennung. Beim jj git push werden Bookmarks zu normalen Git Branches auf dem Remote.
Ja, das ist der empfohlene Einstieg. Mit jj git init --colocate laufen beide Tools im selben Verzeichnis. Man kann beliebig zwischen jj und git Befehlen wechseln, ohne Konsistenzprobleme.
Mit jj undo fuer die letzte Operation oder jj op restore <operation-id> fuer jeden beliebigen frueheren Zustand. Das Operation Log reicht weit zurueck und macht destruktive Fehler praktisch folgenlos.
Google nutzt jj intern, was die Stabilitaet im grossen Massstab belegt. Laut oeffentlichen Berichten setzen auch Entwickler bei Personio und anderen Scale Ups das Tool auf PHP Monolithen ein. Das Projekt hat 2026 ueber 27.000 Sterne auf GitHub.
Wenn man taeglich mit Rebase, Stash, abhaengigen Features oder KI Agents wie Claude Code arbeitet, lohnt sich der Blick sehr. Der Einstieg ist in wenigen Stunden gemacht, das Risiko ist niedrig, weil Git Kompatibilitaet jederzeit erhalten bleibt.