Du arbeitest gerade an einem Feature-Branch, als dich ein Teamkollege um ein Review für seinen Pull-Request bittet. Du könntest deine Änderungen stashen, den Branch wechseln und hoffen, dass du später wieder reinkommst. Oder du committest halbfertige Arbeit, nur um nichts zu verlieren. Dann noch der Notfall-Hotfix: Die Produktion steht, und du steckst mitten in einem Refactoring, das die halbe Codebase berührt. Jeder dieser Kontextwechsel kostet 10–15 Minuten Rüstzeit und reißt dich aus dem Fokus.
Git worktree löst das, indem du mehrere Branches gleichzeitig in separaten Verzeichnissen auschecken kannst. Statt zu stashen oder unfertige Commits zu machen, wechselst du einfach mit cd in ein anderes Verzeichnis, in dem bereits ein anderer Branch ausgecheckt ist. Arbeite am Hotfix, deploye ihn und wechsle dann mit cd zurück zu deinem Feature – exakt so, wie du es verlassen hast.
In diesem Tutorial zeige ich dir, wie du Worktrees erstellst und verwaltest, typische Stolperfallen vermeidest und sie in deinen Alltag integrierst. Du solltest Git-Branches, Commits und grundlegende Befehlszeilenkenntnisse bereits mitbringen. Wenn du die Git-Grundlagen auffrischen willst, empfehle ich DataCamps Tutorial „Introduction to Git“ für das Wichtigste vorab.
Was ist Git Worktree?
Git worktree ist ein integriertes Feature, das zusätzliche Arbeitsverzeichnisse erzeugt, die mit demselben Repository verknüpft sind. Dein Hauptarbeitsverzeichnis ist der primäre Worktree, und jeder zusätzliche Worktree erhält sein eigenes Verzeichnis mit einem eigenen ausgecheckten Branch. Alle diese Worktrees hängen am selben .git-Repository.
Diese geteilte Repository-Architektur bedeutet: Commits, die du in einem Worktree machst, erscheinen sofort in der gemeinsamen Git-Datenbank und sind in allen anderen Worktrees sichtbar. Die Dateien selbst bleiben unabhängig — wenn du train.py in einem Worktree bearbeitest, betrifft das nur dieses Verzeichnis, bis du die Änderungen committest.
Warum nicht einfach mehrere Terminals nutzen?
Du kannst nicht in demselben Verzeichnis mehrere Terminals öffnen und gleichzeitig an verschiedenen Branches arbeiten. Git erlaubt pro Verzeichnis nur einen ausgecheckten Branch. Wenn du in einem Terminal git checkout feature-b ausführst, ändert das die Dateien für alle Terminals, die auf dieses Verzeichnis zeigen.
Git worktree löst das, indem jeder Branch sein eigenes Verzeichnis bekommt. Jedes Verzeichnis ist komplett unabhängig mit eigenen Dateien, laufenden Prozessen und Build-Artefakten. Der Wechsel zwischen Branches wird zu cd ../anderes-verzeichnis statt git checkout anderer-branch.
Voraussetzungen für Git Worktree
Bevor du git worktree nutzt, prüfe dein Setup:
Git 2.5 oder neuer: Mit git --version prüfen. Git worktree kam 2015 – die meisten Installationen haben es bereits
Bestehendes Git-Repository: Du brauchst ein Repository mit mindestens einem Branch
Vertrautheit mit der Kommandozeile: Alle Worktree-Operationen laufen im Terminal
Wenn die Hilfeseite angezeigt wird, bist du startklar.
Wann git worktree nutzen
Git worktree ist ideal, wenn ein Branch-Wechsel deine aktuelle Arbeit stören würde:
Code-Reviews: Änderungen eines Teamkollegen testen, ohne dein Feature zu stashen
Notfall-Hotfixes: Produktionsbugs fixen, während dein Refactoring unberührt bleibt
Parallele Entwicklung: An zwei unabhängigen Features arbeiten, ohne ständig Branches zu wechseln
Laufende Prozesse: Eine 30-minütige Test-Suite starten und parallel in einem anderen Worktree weiter coden
Lass es bei kurzen Aufgaben unter 10 Minuten, bei denen git checkout einfacher ist, oder wenn du fokussiert an einem einzigen Thema ohne Unterbrechungen arbeitest.
Deinen ersten Worktree erstellen
Am besten verstehst du git worktree, wenn du einen erstellst und live ausprobierst. Wir gehen die Grundbefehle durch, schauen uns die von Git erzeugte Struktur an und beobachten, wie Änderungen zwischen Worktrees fließen.
Ein Beispiel-Repository einrichten
Bevor wir in Worktrees einsteigen, brauchst du ein Git-Repository. Wenn du bereits ein Python-Projekt mit mehreren Branches hast, spring zum nächsten Abschnitt. Andernfalls richten wir schnell eine einfache ML-Pipeline ein:
Diese Dateien committen und einen Feature-Branch anlegen:
gitadd.git commit -m"Initial commit"git branch feature-preprocessingBereitgestellt von
Jetzt hast du ein Repository mit zwei Branches: main (dein aktueller Branch) und feature-preprocessing.
Worktree-Grundlagen
Einen Worktree für einen bestehenden Branch zu erstellen, braucht nur einen Befehl. Lass uns feature-preprocessing in einem separaten Verzeichnis auschecken:
git worktree add../ml-pipeline-preprocessing feature-preprocessingBereitgestellt von
Dadurch entsteht ein neues Verzeichnis namens ml-pipeline-preprocessing eine Ebene über deinem aktuellen Ort, der Branch feature-preprocessing wird dort ausgecheckt und mit deinem bestehenden Repository verknüpft.
Git bestätigt die Erstellung:
Preparing worktree (checking out 'feature-preprocessing')
HEAD is now at 0a7f986 Initial commitBereitgestellt von
Für komplett neue Arbeit erstellst du Branch und Worktree in einem Schritt:
git worktree add -b feature-visualization ../ml-pipeline-vizBereitgestellt von
Der Schalter -b erzeugt einen neuen Branch namens feature-visualization und checkt ihn im neuen Worktree aus.
Die Worktree-Struktur erkunden
Mit dem angelegten Worktree hast du nun mehrere Verzeichnisse im Dateisystem. Um alle anzuzeigen:
/Users/you/projects/ml-pipeline 0a7f986 [main]
/Users/you/projects/ml-pipeline-preprocessing 0a7f986 [feature-preprocessing]Bereitgestellt von
Die erste Zeile zeigt deinen Haupt-Worktree — das ursprüngliche Verzeichnis mit dem .git-Ordner. Die zweite Zeile zeigt den verknüpften Worktree. Beide zeigen den aktuellen Commit-Hash und den ausgecheckten Branch.
Jedes Worktree-Verzeichnis funktioniert wie ein vollständiges Git-Repository. Du kannst hinein navigieren, Dateien bearbeiten, git status ausführen und Commits machen. Verknüpfte Worktrees enthalten keinen vollständigen .git-Ordner — stattdessen gibt es eine .git-Datei, die auf das Haupt-Repository verweist. Im Haupt-.git-Verzeichnis speichert ein worktrees-Ordner Metadaten zu jedem verknüpften Worktree.
Arbeiten im Worktree
Wechsle zum Worktree feature-preprocessing und mach einen Commit:
7c8d4e2 Add feature preprocessing function
0a7f986 Initial commitBereitgestellt von
Beachte, dass der Commit sofort an beiden Orten sichtbar ist – ohne weitere Befehle.
Git-Worktree-Anwendungsfälle
Jetzt, da du weißt, wie du Worktrees erstellst und nutzt, schauen wir uns praxisnahe Szenarien an, in denen sie echte Probleme in der Entwicklung lösen.
Code-Review-Workflow
Dein Teamkollege braucht Feedback zu seinem PR. Statt deine Änderungen zu stashen und den Branch zu wechseln, erstell ein separates Verzeichnis fürs Review:
/Users/you/projects/ml-pipeline a3f9c81 [main]
/Users/you/projects/ml-pipeline-review b7d4e92 [pr/data-validation]
/Users/you/projects/ml-pipeline-hotfix a3f9c81 [hotfix/schema-bug]Bereitgestellt von
Jede Zeile zeigt den Verzeichnispfad, den aktuellen Commit-Hash und den ausgecheckten Branch. Der erste Eintrag ist immer dein Haupt-Worktree (mit dem .git-Ordner), die restlichen sind verknüpfte Worktrees.
Für Skripte oder schnelles Navigieren kannst du nur die Pfade extrahieren:
Schauen wir uns an, wie du das Maximum aus Worktrees herausholst und typische Fehler vermeidest.
Worktree-Organisation
Wo du Worktrees ablegst, ist wichtig. Die meisten legen sie als Geschwisterverzeichnisse zum Haupt-Repository an:
~/projects/
ml-pipeline/ # main worktree
ml-pipeline-feature-auth/ # linked worktree
ml-pipeline-hotfix-login/ # linked worktreeBereitgestellt von
Diese Struktur hält alles beisammen und macht Pfade vorhersehbar. Das Muster projektname-branchname sagt dir genau, was im Verzeichnis steckt.
Manche bevorzugen einen eigenen Ordner:
~/projects/
ml-pipeline/ # main worktree
ml-pipeline-worktrees/
feature-auth/
hotfix-login/Bereitgestellt von
Wähle eine Variante und bleib konsistent. Aussagekräftige Namen wie ml-pipeline-user-authentication dokumentieren sich selbst, während generische wie ml-pipeline-temp oder ml-pipeline-2 dich zwingen, nachzusehen. Behandle Worktrees als temporär — erstelle sie für eine konkrete Aufgabe und entferne sie danach.
Häufige Stolperfallen
Gleicher Branch in mehreren Worktrees
Git verhindert, dass derselbe Branch in zwei Worktrees ausgecheckt wird:
fatal: 'main' is already used by worktree at '/Users/you/projects/ml-pipeline'Bereitgestellt von
Dieser Schutz existiert, weil du sonst widersprüchliche Commits erzeugen könntest. Wenn du denselben Code an zwei Orten brauchst, erstelle einen neuen Branch.
Vergessene Worktrees und Speicherplatz
Jeder Worktree bleibt auf deinem Dateisystem, bis du ihn explizit entfernst. Alte Worktrees stapeln sich; Projekte sammeln schnell 15+ vergessene Worktrees und belegen Gigabytes.
Jeder Worktree enthält eine vollständige Kopie der Dateien deines Repositories. Ein 500-MB-Repository mit 5 Worktrees belegt 2,5 GB. Entferne Worktrees, wenn du fertig bist:
git worktree list
git worktree remove ../ml-pipeline-old-featureBereitgestellt von
Worktrees verschachteln
Erstelle keinen Worktree innerhalb des Verzeichnisses eines anderen Worktrees. Git erlaubt es, aber es führt zu verwirrenden Strukturen und erschwert das Aufräumen.
Workflow-Optimierung
Shell-Aliasse sparen Zeit, wenn du häufig Worktrees erstellst:
aliasgwl='git worktree list'aliasgwa='git worktree add'aliasgwr='git worktree remove'Bereitgestellt von
Für komplexere Setups schreib eine Funktion, die in einem Schritt einen Worktree erstellt und deine Entwicklungsumgebung konfiguriert:
Die Variable ${PWD##*/} extrahiert den Namen deines aktuellen Verzeichnisses. wt feature-logging aus ml-pipeline erzeugt ml-pipeline-feature-logging, wechselt hinein und setzt eine Python-Virtualenv samt Abhängigkeiten auf.
Einen Worktree zu erstellen, wird so zum Einzeiler:
Passe das für deine Sprache an: Ersetze das Python-Setup durch bundle install für Ruby, cargo build für Rust oder npm install für Node.js.
Dein Editor oder deine IDE funktioniert ohne Spezialkonfiguration mit Worktrees. Jeder Worktree ist einfach ein Verzeichnis – also öffne ihn wie jeden anderen Projektordner. Moderne Editoren können mehrere Projektwurzeln gleichzeitig öffnen — du kannst drei Worktrees in einem Fenster geöffnet haben und in der Sidebar wechseln.
Advanced Worktrees: KI-gestützte parallele Entwicklung
Wenn du KI-Coding-Assistenten nutzt, schalten Worktrees einen mächtigen Parallel-Workflow frei. Dieser Ansatz hat 2024–2025 bei Entwicklerinnen, Entwicklern und Teams an Fahrt aufgenommen.
Erstelle separate Worktrees für verschiedene Aufgaben:
Öffne für jeden Worktree ein Terminal-Panel und starte deinen KI-Assistenten:
# Pane 1cd ~/projects/ml-pipeline-logging
claude
# Pane 2cd ~/projects/ml-pipeline-optim
claude
# Pane 3cd ~/projects/ml-pipeline-bugfix
claudeBereitgestellt von
Jede KI-Instanz arbeitet an einem anderen Feature, ohne sich in die Quere zu kommen. Teams berichten, dass Arbeit, die früher Tage dauerte, in Stunden erledigt wird. Zum Beispiel betreibt incident.io 4–5 Claude-Code-Agenten parallel mit diesem Muster. In einem Fall schätzte Claude eine UI-Verbesserung auf 2 Stunden – fertig in 10 Minuten.
Abzuwägen:
Token-Verbrauch: Mehrere KI-Sessions nutzen mehr API-Credits und können Rate-Limits treffen
Setup-Overhead: Jeder Worktree braucht seine eigene virtuelle Umgebung und Abhängigkeiten
Kognitive Last: Mehrere Konversationen über unterschiedliche Tasks zu managen
Das eignet sich für große, unabhängige Features (je 30+ Minuten), die nicht dieselben Dateien berühren und wenn genügend API-Kontingent vorhanden ist. Lass es bei schnellen Bugfixes, eng gekoppelten Features oder in der Nähe von API-Limits.
Fazit
Erinnerst du dich an das Szenario vom Anfang — ein Teamkollege braucht ein PR-Review, während du mitten im Feature steckst. Jetzt kennst du die Lösung: git worktree add ../ml-pipeline-review pr/branch-name, dann cd und mit dem Review starten. Deine Feature-Arbeit bleibt unberührt. Kein Stashing, keine halbfertigen Commits, kein mentaler Overhead beim Wiedereinstieg. Zwei Verzeichnisse, zwei Branches, null Reibung.
Git worktree fügt deinem Workflow keine Komplexität hinzu — es nimmt sie weg. Jeder Worktree ist nur ein Verzeichnis mit einem ausgecheckten Branch. Doch diese Einfachheit schaltet etwas Mächtiges frei: Du kannst ohne kognitiven Ballast zwischen Aufgaben wechseln, statt zu stashen, zu checken und dein mentales Modell neu aufzubauen.
Wenn du Worktrees in teamweite Workflows wie Pull-Requests und Code-Reviews integrieren willst, DataCamps Skill Track „GitHub Foundations“ deckt die wichtigsten Praktiken für effektive Zusammenarbeit in verteilten Teams ab.
Git-Worktree-FAQs
Kann ich Git-Worktrees mit GitHub Desktop, VS Code oder anderen GUI-Tools nutzen?⌄
Ja. Worktrees erscheinen für Editoren und Git-GUIs wie normale Projektordner. Du kannst jeden Worktree als separates Projekt öffnen, und die meisten Tools — inklusive VS Code, IntelliJ und GitHub Desktop — unterstützen sie ohne besondere Konfiguration.
Wie interagieren Git-Worktrees mit Remotes wie origin?⌄
Alle Worktrees teilen sich dasselbe .git-Verzeichnis, daher auch dieselbe Remote-Konfiguration und Fetch-Historie. Du musst nicht in jedem Worktree git fetch ausführen — ein Fetch aktualisiert die Remotes für alle. Branch-Tracking verhält sich exakt wie in einem Setup mit nur einem Worktree.
Was passiert, wenn ich ein Worktree-Verzeichnis manuell lösche statt git worktree remove zu nutzen?⌄
Git geht weiterhin davon aus, dass der Worktree existiert, und markiert ihn als „prunable“. Du beschädigst das Repository nicht, aber Git-Befehle können Warnungen anzeigen. Führe git worktree prune aus, um den veralteten Eintrag aufzuräumen und die verwaisten Metadaten sicher zu entfernen.
Sind Git-Worktrees mit großen Monorepos oder Build-Systemen wie Bazel, Pants oder Nx unbedenklich?⌄
Ja, aber Build-Artefakte können sich schnell vervielfachen. Jeder Worktree hat sein eigenes Arbeitsverzeichnis, daher werden Caches, virtuelle Umgebungen und Build-Ausgaben dupliziert. In Monorepos ist es üblich, Build-Tools so zu konfigurieren, dass sie Caches außerhalb des Worktrees speichern, um unnötigen Speicherverbrauch zu vermeiden.
Kann ich Git-Worktrees mit Submodulen oder Sparse Checkouts verwenden?⌄
Ja. Submodule und Sparse Checkouts funktionieren in Worktrees normal, aber du musst sie in jedem Worktree separat initialisieren oder aktualisieren, weil der Arbeitsverzeichnisinhalt nicht geteilt wird. Die zugrunde liegenden Git-Daten bleiben geteilt, aber die ausgecheckten Dateien sind unabhängig.
Ein umfassendes Einführungs-Tutorial zu Python-Schleifen. Lerne und übe while- und for-Schleifen, verschachtelte Schleifen, die Schlüsselwörter break und continue, die Range-Funktion und vieles mehr!
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Git-Advanced-Funktionen meistern, um Data-Science- und Engineering-Workflows zu optimieren – von komplexem Merging bis zur Optimierung großer Projekte.
Du arbeitest gerade an einem Feature-Branch, als dich ein Teamkollege um ein Review für seinen Pull-Request bittet. Du könntest deine Änderungen stashen, den Branch wechseln und hoffen, dass du später wieder reinkommst. Oder du committest halbfertige Arbeit, nur um nichts zu verlieren. Dann noch der Notfall-Hotfix: Die Produktion steht, und du steckst mitten in einem Refactoring, das die halbe Codebase berührt. Jeder dieser Kontextwechsel kostet 10–15 Minuten Rüstzeit und reißt dich aus dem Fokus.
Git worktree löst das, indem du mehrere Branches gleichzeitig in separaten Verzeichnissen auschecken kannst. Statt zu stashen oder unfertige Commits zu machen, wechselst du einfach mit
cdin ein anderes Verzeichnis, in dem bereits ein anderer Branch ausgecheckt ist. Arbeite am Hotfix, deploye ihn und wechsle dann mitcdzurück zu deinem Feature – exakt so, wie du es verlassen hast.In diesem Tutorial zeige ich dir, wie du Worktrees erstellst und verwaltest, typische Stolperfallen vermeidest und sie in deinen Alltag integrierst. Du solltest Git-Branches, Commits und grundlegende Befehlszeilenkenntnisse bereits mitbringen. Wenn du die Git-Grundlagen auffrischen willst, empfehle ich DataCamps Tutorial „Introduction to Git“ für das Wichtigste vorab.
Was ist Git Worktree?
Git worktree ist ein integriertes Feature, das zusätzliche Arbeitsverzeichnisse erzeugt, die mit demselben Repository verknüpft sind. Dein Hauptarbeitsverzeichnis ist der primäre Worktree, und jeder zusätzliche Worktree erhält sein eigenes Verzeichnis mit einem eigenen ausgecheckten Branch. Alle diese Worktrees hängen am selben
.git-Repository.Diese geteilte Repository-Architektur bedeutet: Commits, die du in einem Worktree machst, erscheinen sofort in der gemeinsamen Git-Datenbank und sind in allen anderen Worktrees sichtbar. Die Dateien selbst bleiben unabhängig — wenn du
train.pyin einem Worktree bearbeitest, betrifft das nur dieses Verzeichnis, bis du die Änderungen committest.Warum nicht einfach mehrere Terminals nutzen?
Du kannst nicht in demselben Verzeichnis mehrere Terminals öffnen und gleichzeitig an verschiedenen Branches arbeiten. Git erlaubt pro Verzeichnis nur einen ausgecheckten Branch. Wenn du in einem Terminal
git checkout feature-bausführst, ändert das die Dateien für alle Terminals, die auf dieses Verzeichnis zeigen.Git worktree löst das, indem jeder Branch sein eigenes Verzeichnis bekommt. Jedes Verzeichnis ist komplett unabhängig mit eigenen Dateien, laufenden Prozessen und Build-Artefakten. Der Wechsel zwischen Branches wird zu
cd ../anderes-verzeichnisstattgit checkout anderer-branch.Voraussetzungen für Git Worktree
Bevor du git worktree nutzt, prüfe dein Setup:
git --versionprüfen. Git worktree kam 2015 – die meisten Installationen haben es bereitsPrüfe, ob worktree verfügbar ist:
Wenn die Hilfeseite angezeigt wird, bist du startklar.
Wann git worktree nutzen
Git worktree ist ideal, wenn ein Branch-Wechsel deine aktuelle Arbeit stören würde:
Lass es bei kurzen Aufgaben unter 10 Minuten, bei denen
git checkouteinfacher ist, oder wenn du fokussiert an einem einzigen Thema ohne Unterbrechungen arbeitest.Deinen ersten Worktree erstellen
Am besten verstehst du git worktree, wenn du einen erstellst und live ausprobierst. Wir gehen die Grundbefehle durch, schauen uns die von Git erzeugte Struktur an und beobachten, wie Änderungen zwischen Worktrees fließen.
Ein Beispiel-Repository einrichten
Bevor wir in Worktrees einsteigen, brauchst du ein Git-Repository. Wenn du bereits ein Python-Projekt mit mehreren Branches hast, spring zum nächsten Abschnitt. Andernfalls richten wir schnell eine einfache ML-Pipeline ein:
Erstelle eine README und ein Python-Skript:
Prüfe, ob die Dateien erstellt wurden:
Diese Dateien committen und einen Feature-Branch anlegen:
Jetzt hast du ein Repository mit zwei Branches:
main(dein aktueller Branch) undfeature-preprocessing.Worktree-Grundlagen
Einen Worktree für einen bestehenden Branch zu erstellen, braucht nur einen Befehl. Lass uns
feature-preprocessingin einem separaten Verzeichnis auschecken:Dadurch entsteht ein neues Verzeichnis namens
ml-pipeline-preprocessingeine Ebene über deinem aktuellen Ort, der Branchfeature-preprocessingwird dort ausgecheckt und mit deinem bestehenden Repository verknüpft.Git bestätigt die Erstellung:
Für komplett neue Arbeit erstellst du Branch und Worktree in einem Schritt:
Der Schalter
-berzeugt einen neuen Branch namensfeature-visualizationund checkt ihn im neuen Worktree aus.Die Worktree-Struktur erkunden
Mit dem angelegten Worktree hast du nun mehrere Verzeichnisse im Dateisystem. Um alle anzuzeigen:
Die erste Zeile zeigt deinen Haupt-Worktree — das ursprüngliche Verzeichnis mit dem
.git-Ordner. Die zweite Zeile zeigt den verknüpften Worktree. Beide zeigen den aktuellen Commit-Hash und den ausgecheckten Branch.Jedes Worktree-Verzeichnis funktioniert wie ein vollständiges Git-Repository. Du kannst hinein navigieren, Dateien bearbeiten,
git statusausführen und Commits machen. Verknüpfte Worktrees enthalten keinen vollständigen.git-Ordner — stattdessen gibt es eine.git-Datei, die auf das Haupt-Repository verweist. Im Haupt-.git-Verzeichnis speichert einworktrees-Ordner Metadaten zu jedem verknüpften Worktree.Arbeiten im Worktree
Wechsle zum Worktree
feature-preprocessingund mach einen Commit:Der Commit läuft ganz normal durch:
Geh zurück in deinen Haupt-Worktree und prüfe die Historie:
Dein neuer Commit erscheint:
Beachte, dass der Commit sofort an beiden Orten sichtbar ist – ohne weitere Befehle.
Git-Worktree-Anwendungsfälle
Jetzt, da du weißt, wie du Worktrees erstellst und nutzt, schauen wir uns praxisnahe Szenarien an, in denen sie echte Probleme in der Entwicklung lösen.
Code-Review-Workflow
Dein Teamkollege braucht Feedback zu seinem PR. Statt deine Änderungen zu stashen und den Branch zu wechseln, erstell ein separates Verzeichnis fürs Review:
Teste die Änderungen und gib dein Feedback. Wenn du fertig bist:
Deine ursprüngliche Arbeit bleibt unberührt. Kein Stashing, kein Kontextwechsel nötig. Mehr Strategien für effektive Code-Reviews findest du im DataCamp-Guide zu Best Practices für Code-Reviews.
Notfall-Hotfixes
Ohne Worktrees:
Mit Worktrees:
Fixen und deployen:
Du bist in Sekunden zurück in deinem Refactoring – mit allen Dateien exakt wie zuvor.
Parallele Feature-Entwicklung
Du implementierst Custom-Metriken und einen neuen Dataloader — zwei unabhängige Features. Richte für jedes einen Worktree ein:
Dein Dateisystem sieht jetzt so aus:
Lass beide Features parallel laufen — jeweils in einem eigenen Terminal:
Beide Prozesse laufen gleichzeitig ohne Konflikte. Wenn ein Feature fertig ist, merge es und entferne den Worktree:
Worktrees verwalten und aufräumen
Worktrees auflisten
So siehst du alle Worktrees in einem Repository:
Jede Zeile zeigt den Verzeichnispfad, den aktuellen Commit-Hash und den ausgecheckten Branch. Der erste Eintrag ist immer dein Haupt-Worktree (mit dem
.git-Ordner), die restlichen sind verknüpfte Worktrees.Für Skripte oder schnelles Navigieren kannst du nur die Pfade extrahieren:
Worktrees entfernen
Wenn du in einem Worktree fertig bist, entferne ihn sauber:
Git schützt vor Datenverlust. Wenn es uncommittete Änderungen gibt:
Erzwinge das Entfernen, wenn du sicher bist:
Wenn ein Worktree gesperrt ist, nutze
--forcedoppelt:Wenn du ein Worktree-Verzeichnis manuell gelöscht hast (
rm -rfoder Dateimanager), verfolgt Git es intern weiter. Räum veraltete Referenzen auf:Zeige vorab, was entfernt würde:
Best Practices und häufige Fallen
Schauen wir uns an, wie du das Maximum aus Worktrees herausholst und typische Fehler vermeidest.
Worktree-Organisation
Wo du Worktrees ablegst, ist wichtig. Die meisten legen sie als Geschwisterverzeichnisse zum Haupt-Repository an:
Diese Struktur hält alles beisammen und macht Pfade vorhersehbar. Das Muster
projektname-branchnamesagt dir genau, was im Verzeichnis steckt.Manche bevorzugen einen eigenen Ordner:
Wähle eine Variante und bleib konsistent. Aussagekräftige Namen wie
ml-pipeline-user-authenticationdokumentieren sich selbst, während generische wieml-pipeline-tempoderml-pipeline-2dich zwingen, nachzusehen. Behandle Worktrees als temporär — erstelle sie für eine konkrete Aufgabe und entferne sie danach.Häufige Stolperfallen
Gleicher Branch in mehreren Worktrees
Git verhindert, dass derselbe Branch in zwei Worktrees ausgecheckt wird:
Dieser Schutz existiert, weil du sonst widersprüchliche Commits erzeugen könntest. Wenn du denselben Code an zwei Orten brauchst, erstelle einen neuen Branch.
Vergessene Worktrees und Speicherplatz
Jeder Worktree bleibt auf deinem Dateisystem, bis du ihn explizit entfernst. Alte Worktrees stapeln sich; Projekte sammeln schnell 15+ vergessene Worktrees und belegen Gigabytes.
Jeder Worktree enthält eine vollständige Kopie der Dateien deines Repositories. Ein 500-MB-Repository mit 5 Worktrees belegt 2,5 GB. Entferne Worktrees, wenn du fertig bist:
Worktrees verschachteln
Erstelle keinen Worktree innerhalb des Verzeichnisses eines anderen Worktrees. Git erlaubt es, aber es führt zu verwirrenden Strukturen und erschwert das Aufräumen.
Workflow-Optimierung
Shell-Aliasse sparen Zeit, wenn du häufig Worktrees erstellst:
Für komplexere Setups schreib eine Funktion, die in einem Schritt einen Worktree erstellt und deine Entwicklungsumgebung konfiguriert:
Die Variable
${PWD##*/}extrahiert den Namen deines aktuellen Verzeichnisses.wt feature-loggingausml-pipelineerzeugtml-pipeline-feature-logging, wechselt hinein und setzt eine Python-Virtualenv samt Abhängigkeiten auf.Einen Worktree zu erstellen, wird so zum Einzeiler:
Passe das für deine Sprache an: Ersetze das Python-Setup durch
bundle installfür Ruby,cargo buildfür Rust odernpm installfür Node.js.Dein Editor oder deine IDE funktioniert ohne Spezialkonfiguration mit Worktrees. Jeder Worktree ist einfach ein Verzeichnis – also öffne ihn wie jeden anderen Projektordner. Moderne Editoren können mehrere Projektwurzeln gleichzeitig öffnen — du kannst drei Worktrees in einem Fenster geöffnet haben und in der Sidebar wechseln.
Advanced Worktrees: KI-gestützte parallele Entwicklung
Wenn du KI-Coding-Assistenten nutzt, schalten Worktrees einen mächtigen Parallel-Workflow frei. Dieser Ansatz hat 2024–2025 bei Entwicklerinnen, Entwicklern und Teams an Fahrt aufgenommen.
Erstelle separate Worktrees für verschiedene Aufgaben:
Öffne für jeden Worktree ein Terminal-Panel und starte deinen KI-Assistenten:
Jede KI-Instanz arbeitet an einem anderen Feature, ohne sich in die Quere zu kommen. Teams berichten, dass Arbeit, die früher Tage dauerte, in Stunden erledigt wird. Zum Beispiel betreibt incident.io 4–5 Claude-Code-Agenten parallel mit diesem Muster. In einem Fall schätzte Claude eine UI-Verbesserung auf 2 Stunden – fertig in 10 Minuten.
Abzuwägen:
Das eignet sich für große, unabhängige Features (je 30+ Minuten), die nicht dieselben Dateien berühren und wenn genügend API-Kontingent vorhanden ist. Lass es bei schnellen Bugfixes, eng gekoppelten Features oder in der Nähe von API-Limits.
Fazit
Erinnerst du dich an das Szenario vom Anfang — ein Teamkollege braucht ein PR-Review, während du mitten im Feature steckst. Jetzt kennst du die Lösung:
git worktree add ../ml-pipeline-review pr/branch-name, danncdund mit dem Review starten. Deine Feature-Arbeit bleibt unberührt. Kein Stashing, keine halbfertigen Commits, kein mentaler Overhead beim Wiedereinstieg. Zwei Verzeichnisse, zwei Branches, null Reibung.Git worktree fügt deinem Workflow keine Komplexität hinzu — es nimmt sie weg. Jeder Worktree ist nur ein Verzeichnis mit einem ausgecheckten Branch. Doch diese Einfachheit schaltet etwas Mächtiges frei: Du kannst ohne kognitiven Ballast zwischen Aufgaben wechseln, statt zu stashen, zu checken und dein mentales Modell neu aufzubauen.
Wenn du Worktrees in teamweite Workflows wie Pull-Requests und Code-Reviews integrieren willst, DataCamps Skill Track „GitHub Foundations“ deckt die wichtigsten Praktiken für effektive Zusammenarbeit in verteilten Teams ab.