
Git Worktree
Ein Git Worktree ist ein zusätzlicher Arbeitsordner, der zum selben Projektarchiv gehört. So kann man an mehreren Versionen eines Programms gleichzeitig arbeiten, ohne den Ordner ständig umschalten zu müssen.
Programmierer speichern ihren Programmtext meist mit einem Werkzeug namens Git. Git merkt sich jede Änderung an den Dateien und kann jeden früheren Stand wieder herstellen. Normalerweise gibt es dabei genau einen Ordner, in dem man arbeitet, und dort liegt immer nur eine Version des Projekts. Ein Git Worktree ist ein weiterer solcher Arbeitsordner, der aber zur gleichen gespeicherten Projektgeschichte gehört. Man hat dann zwei oder mehr Ordner auf der Festplatte, in denen unterschiedliche Versionen desselben Projekts gleichzeitig offen liegen. Der Befehl dafür heißt „git worktree add“.
Wozu ein zweiter Arbeitsordner gut ist
Softwareprojekte werden fast immer in mehreren Entwicklungslinien gepflegt. Eine Linie enthält die stabile Version für die Nutzer, eine andere die neuen, noch unfertigen Funktionen. In der Git-Sprache heißen diese Linien Branches, also Zweige. Ohne Worktrees muss man den einen Ordner immer umschalten: Git tauscht dann alle Dateien aus, damit der gewünschte Zweig sichtbar wird.
Dieses Umschalten ist der eigentliche Schmerzpunkt. Es geht nur, wenn keine halbfertigen Änderungen offen sind. Wer mitten in einer Aufgabe steckt und dringend einen Fehler in der stabilen Version beheben soll, muss seine Arbeit erst zwischenparken. Mit einem zweiten Worktree entfällt das komplett: der Fehler wird im einen Ordner behoben, die angefangene Arbeit bleibt im anderen unangetastet liegen.
Ein zweiter Vorteil ist Zeit. Große Projekte brauchen nach jedem Umschalten einen neuen Übersetzungsvorgang, weil der Computer den Programmtext erst in ein lauffähiges Programm verwandeln muss. Das kann Minuten dauern. Jeder Worktree behält seine eigenen Zwischenergebnisse, deshalb bleibt beides sofort startklar. Man kann sogar zwei Versionen parallel laufen lassen und direkt vergleichen.
Ein Archiv, mehrere Ordner
Git speichert die gesamte Projektgeschichte in einem versteckten Unterordner mit dem Namen „.git“. Dort liegen alle alten Versionen komprimiert. Die Dateien, die man tatsächlich bearbeitet, sind nur eine ausgepackte Momentaufnahme daraus. Ein Worktree nutzt genau dieses eine Archiv mit, packt aber eine andere Momentaufnahme aus.
Der Unterschied zu einer schlichten Kopie des Ordners ist deshalb wesentlich. Eine Kopie hätte ihre eigene, abgetrennte Geschichte, und Änderungen müssten mühsam hin und her übertragen werden. Bei Worktrees ist die Geschichte gemeinsam: Ein gespeicherter Stand aus dem einen Ordner ist im anderen sofort sichtbar. Auch der Platzbedarf ist geringer, weil das Archiv nur einmal existiert.
Damit nichts durcheinandergerät, gilt eine Regel: Dieselbe Entwicklungslinie darf nicht in zwei Worktrees gleichzeitig offen sein. Git verweigert das und meldet einen Fehler. Ein häufiger Irrtum ist außerdem, einen nicht mehr benötigten Worktree einfach zu löschen. Git merkt sich den Ordner weiter und braucht danach den Befehl „git worktree prune“, um die Notiz aufzuräumen.
Worktrees im Alltag von Entwicklern
Der Befehl steckt seit 2015 in Git selbst, man muss also nichts nachinstallieren. Trotzdem kennen ihn viele Entwickler nicht, weil das Umschalten für kleine Projekte reicht. Wer aber an sehr großen Codebasen arbeitet, etwa bei Betriebssystemen oder Browsern, nutzt Worktrees regelmäßig. Auch automatische Testsysteme legen für jeden zu prüfenden Stand oft einen eigenen Worktree an.
In letzter Zeit tauchen Worktrees vor allem im Zusammenhang mit KI-Programmierassistenten in den Nachrichten auf. Solche Assistenten bearbeiten ein Projekt selbstständig über viele Schritte. Gibt man mehreren Assistenten gleichzeitig Aufgaben, würden sie sich in einem einzigen Ordner gegenseitig die Dateien überschreiben. Jeder bekommt daher seinen eigenen Worktree als abgeschirmten Arbeitsplatz, und am Ende prüft ein Mensch, welche Ergebnisse übernommen werden.