Was ist ein Git-Worktree?

Kurz gesagt

Ein Git-Worktree ist ein zusätzlicher Arbeitsordner, der am selben Git-Repository hängt. In jedem Ordner ist ein anderer Branch ausgecheckt, sodass du an zwei Dingen gleichzeitig arbeiten kannst, ohne das Repo erneut zu klonen, und parallele Coding-Agenten sich nicht in die Quere kommen.

So funktioniert es

Normalerweise hat ein Repo-Ordner einen ausgecheckten Branch, und zum Wechseln musst du erst committen oder stashen. Mit einem Worktree bleibt dein Hauptordner, wie er ist, und daneben kommt ein neuer Ordner mit einem anderen Branch hinzu. Die Ordner teilen sich Commit-Verlauf und Objektdatenbank, haben aber jeweils eigenen HEAD, eigenen Index und eigene Arbeitsdateien.

Die wichtigsten Befehle

Eine Handvoll Befehle deckt den Alltag ab.

  • git worktree add ../feature-a -b feature-a: legt einen neuen Branch und Ordner an.
  • git worktree list: zeigt die offenen Worktrees.
  • git worktree remove ../feature-a: entfernt den Ordner.
  • git worktree prune: räumt Einträge zu Ordnern auf, die von Hand gelöscht wurden.

Warum das für Coding-Agenten wichtig ist

Zwei Agenten im selben Ordner können gegenseitig ihre Dateien überschreiben, und der Testlauf des einen kann über die halb fertige Änderung des anderen stolpern. Gibst du jedem Agenten einen eigenen Worktree, passiert das nicht: Jeder arbeitet auf seinem Branch, und du führst die Ergebnisse per Pull Request oder Merge zusammen. Branches, die dieselbe Datei berühren, können beim Merge trotzdem Konflikte erzeugen.

Worauf du achten solltest

Worktrees sind leichtgewichtig, aber ein paar Details überraschen immer wieder.

  • Derselbe Branch kann nicht in zwei Worktrees gleichzeitig ausgecheckt sein.
  • Nicht getrackte Dateien wie node_modules, .env und Build-Ausgaben werden nicht kopiert; eventuell musst du Abhängigkeiten erneut installieren.
  • Wenn jeder Worktree einen eigenen Dev-Server startet, achte auf Port-Konflikte.
  • Entferne Worktrees, die du nicht mehr brauchst, sonst sammeln sich vergessene Ordner auf der Festplatte.

Worktrees in AgentVera

AgentVera nutzt Worktrees als Grundlage, um Agenten parallel laufen zu lassen.

  • Im Worktree-Panel unter Git öffnest du pro Feature einen Branch samt Ordner und startest direkt in diesem Ordner einen Agenten.
  • In der Nachtschicht läuft jede Aufgabe in einem eigenen Worktree auf einem Branch night/<date>-<slug>; der Agent committet, pusht aber nie (Pro und Team).
  • Preview-Umgebungen starten den Dev-Server des Projekts und jedes Worktrees unter einer eigenen Adresse, benannt nach dem Branch.
  • Die Agenten-Koordination weist darauf hin, wenn Agenten in verschiedenen Worktrees dieselbe Datei ändern, da der Merge Konflikte erzeugen kann.

FAQ

Was ist der Unterschied zwischen einem Worktree und einem Branch?

Ein Branch ist eine benannte Commit-Linie; ein Worktree ist ein Ordner, in dem ein Branch ausgecheckt ist. Mit Branches allein wechselst du innerhalb eines Ordners; mit Worktrees hältst du mehrere Branches gleichzeitig in getrennten Ordnern offen.

Wie unterscheidet sich ein Worktree davon, das Repo zweimal zu klonen?

Worktrees teilen sich ein Repository: Commits, Branches und Konfiguration sind gemeinsam, und sie brauchen weniger Speicherplatz. Ein Commit in einem Worktree ist sofort in den anderen sichtbar, während getrennte Klone Push und Fetch brauchen.

Wie lösche ich einen Worktree?

Führe git worktree remove <Ordner> aus. Hast du den Ordner von Hand gelöscht, räumt git worktree prune den Eintrag auf. Der Branch bleibt bestehen; lösche ihn bei Bedarf separat mit git branch -d.

Teilen Worktrees node_modules?

Nein. Nicht getrackte Dateien sind in jedem Ordner getrennt, daher installierst du die Abhängigkeiten in jedem Worktree.

Verwandte Begriffe

Alle Begriffe

Sieh diese Ideen in Aktion.

Lade AgentVera kostenlos herunter, füge einen Projektordner hinzu und lass Claude Code, Codex und andere Agenten nebeneinander laufen.