TIPS 06 · ALBERI

Drei Aufgaben gleichzeitig, null Chaos

Wie ich drei Claude-Code-Sitzungen gleichzeitig an derselben App arbeiten lasse, ohne dass sie sich in die Quere kommen: ein Worktree pro Sitzung, mit den Prompts zum Kopieren.

Was es ist und warum es zählt

Wenn du drei Claude-Code-Sitzungen im selben Ordner öffnest und jeder eine andere Aufgabe gibst, kommen sie sich früher oder später in die Quere. Eine ändert eine Datei, während die andere gerade daran arbeitet, und am Ende weißt du nicht mehr, welche Änderung von wem kommt.

Genau das löst ein Worktree. Er ist eine Kopie des Projekts in einem eigenen Ordner, mit einem eigenen Branch. Die Projektgeschichte ist dieselbe, weil das eine Funktion von Git ist und kein Trick von Claude, aber die Dateien sind getrennt: Was Claude in einer Kopie ändert, berührt die anderen nicht.

Jede Claude-Sitzung arbeitet in ihrer eigenen Kopie: Das Hauptprojekt fasst niemand an, bis du es entscheidest. Am Ende schaust du dir an, was jede gemacht hat, behältst, was passt, und wirfst den Rest weg.

Du brauchst nur eins: Das Projekt muss Git verwenden und mindestens einen Commit haben.

1. Eine Sitzung, eine Kopie

Im Terminal öffnest du jede Sitzung direkt in ihrer eigenen Kopie. Führ im Projektordner aus:

Die Zeile
claude --worktree login-fehler

Die Kurzform -w login-fehler geht auch. Claude Code legt den Ordner .claude/worktrees/login-fehler auf einem neuen Branch an, worktree-login-fehler, und die Sitzung arbeitet darin.

In einer schon offenen Sitzung

Wenn die Sitzung schon offen ist oder du das Terminal nicht nutzt, schreib als Allererstes:

Der Prompt
Arbeite in einem neuen Worktree namens login-fehler.

Claude legt die Kopie selbst an und sagt dir, wo es arbeitet. In der Desktop-App kannst du auch die Option worktree wählen, wenn du eine neue Sitzung startest.

Wiederhole das in anderen Fenstern mit anderen Namen: „preisseite“, „tests“. Eine Aufgabe pro Sitzung, mit einem klaren Namen: In zwei Stunden musst du auf einen Blick wissen, was in jeder Kopie steckt.

Eine Sache, die du nur einmal machen musst: Füg .claude/worktrees/ zur Datei .gitignore hinzu, damit die Kopien im Hauptprojekt nicht als neue Dateien auftauchen. Das kannst du Claude in einer Zeile sagen.

2. Was du vor dem Start wissen solltest

Die Kopie startet vom Haupt-Branch online, meistens main, nicht von dem, was du auf dem Computer hast und noch nicht hochgeladen hast. Commits, die du noch nicht gepusht hast, fehlen in der Kopie: erst hochladen, dann die Kopien öffnen. Ist das Projekt nirgends online, startet die Kopie da, wo du bist.

Dann sind da die Dateien. Eine Kopie enthält nur die Dateien, die Git kennt: Sie nimmt keine Dateien mit, die vom Projekt ausgeschlossen sind, wie .env mit den Schlüsseln, und auch keine installierten Bibliotheken. Startest du ohne, läuft die App in der Kopie nicht an, oder die Tests schlagen aus Gründen fehl, die mit der Aufgabe nichts zu tun haben.

Damit .env in jeder Kopie landet, leg im Hauptordner des Projekts eine Datei .worktreeinclude mit einer Zeile darin an:

Die Datei
.env

Claude Code liest sie jedes Mal, wenn es eine Kopie anlegt, und kopiert die aufgelisteten Dateien hinein. Sie folgt denselben Regeln wie .gitignore und kopiert nur Dateien, die Git ignoriert, also wird nichts vom Code doppelt. Hast du weitere solche Dateien, etwa .env.local, füg für jede eine Zeile hinzu.

Die Bibliotheken dagegen müssen installiert werden. Sag in der Kopie:

Der Prompt
Installier in dieser Kopie, was gebraucht wird.

3. Wenn es fertig ist: speichern und prüfen

Erst speichern. Beim Zusammenführen zählt nur Arbeit, die mit einem Commit gespeichert ist: Was nur im Ordner der Kopie liegt, kommt nicht mit. Schreib in der Sitzung der Kopie:

Der Prompt
Committe die gesamte Arbeit in dieser Kopie.

Dann wechsle in die Hauptsitzung, die im eigentlichen Projekt offen ist, und schreib:

Der Prompt
Zeig mir, was der Branch worktree-login-fehler gegenüber main ändert, Datei für Datei, und lass die Tests laufen.

Steht in der Liste eine Datei, die mit der Aufgabe nichts zu tun hat, etwa die Preisseite bei einer Login-Aufgabe, frag Claude, warum es sie angefasst hat.

4. Führ zusammen, was passt

Weiterhin aus der Hauptsitzung:

Der Prompt
Führ den Branch worktree-login-fehler in main zusammen. Wenn es Konflikte gibt, halt an und erklär sie mir, bevor du entscheidest.

Wenn der Haupt-Branch deines Projekts nicht main heißt, sondern etwa master, ändere den Namen im Prompt. Wenn du unsicher bist, frag Claude.

Ein Konflikt entsteht, wenn zwei Aufgaben dieselben Zeilen unterschiedlich geändert haben und jemand entscheiden muss, welche Version bleibt. Ich will lieber verstehen, was Claude auswählt, als es hinterher herauszufinden.

Einer nach dem anderen: erst einer, Tests, dann der nächste. Führst du drei Branches direkt hintereinander zusammen und dann geht etwas kaputt, weißt du nicht, welcher der drei es war.

5. Wirf weg, was nicht passt

Wenn du eine Sitzung schließt, die in einer Kopie arbeitet, schaut Claude Code nach, ob darin Arbeit steckt: geänderte Dateien, neue Dateien, Commits. Wenn ja, fragt es dich, ob die Kopie bleiben oder weg soll. Ist die Kopie sauber und hast du der Sitzung keinen Namen gegeben, entfernt es sie selbst.

Gefällt dir die Arbeit nicht, entfern sie: Das Hauptprojekt bleibt, wie es war. Aber das Entfernen löscht den Ordner und seinen Branch, mit allem, was darin ist. Hast du die Arbeit schon zusammengeführt, verlierst du nichts, weil sie schon im Haupt-Branch ist.

Wenn du magst, frag vor dem Entfernen:

Der Prompt
Fass mir zusammen, was du in dieser Kopie ausprobiert hast

So geht die Idee nicht verloren. Entscheidest du dich, die Kopie zu behalten, zeigt dir Claude Code beim Beenden den Befehl, mit dem du später weitermachst.

Um zu sehen, wie viele Kopien herumliegen, frag Claude oder führ git worktree list aus. Um eine von Hand zu entfernen, gibt es git worktree remove, gefolgt vom Ordner der Kopie.

Die goldene Regel

Drei verschiedene Aufgaben, drei Kopien. Wenn zwei Aufgaben dieselben Dateien anfassen, mach sie nacheinander: Kopien verhindern Katastrophen, keine Konflikte.

Der Login-Fehler und die Preisseite laufen problemlos parallel, weil sie an verschiedenen Stellen der App liegen. Das Menü neu bauen und die Farben der ganzen App ändern nicht: Beides landet in denselben Dateien, und beim Zusammenführen stehen sie alle im Konflikt.

Häufige Fehler

  • Zwei Aufgaben, die dieselben Dateien anfassen, in zwei Kopien: Teil sie nach Bereichen der App auf oder mach sie nacheinander.
  • Ohne .env und ohne Bibliotheken loslegen: Lass die Kopie einrichten, bevor du die Aufgabe gibst, oder trag die Dateien in die .worktreeinclude ein.
  • Ohne Commit zusammenführen: Was nur im Ordner liegt, wandert nicht mit dem Branch, also lass vorher in der Kopie committen.
  • Alles auf einmal zusammenführen: Führ einen Branch zusammen, lass die Tests laufen, dann kommt der nächste.
  • Eine Kopie entfernen, ohne reinzuschauen: Das Entfernen löscht auch den Branch, also führ vorher zusammen oder lass dir zusammenfassen, was drin war.

Checkliste

  • Das Projekt verwendet Git und hat mindestens einen Commit
  • .claude/worktrees/ steht in der .gitignore
  • Eine Sitzung pro Aufgabe, jede in ihrer eigenen Kopie mit klarem Namen
  • Jede Kopie hat .env und Bibliotheken, bevor es losgeht
  • Commit in der Kopie, dann Prüfung aus der Hauptsitzung
  • Ein Branch nach dem anderen, mit Tests dazwischen
  • Kopien, die du nicht mehr brauchst, sind entfernt

Häufige Fragen

Brauche ich unbedingt das Terminal?

Nein. Du kannst Claude in einer schon offenen Sitzung bitten, in einem Worktree zu arbeiten, mit dem Satz aus Schritt 1. Das Terminal brauchst du nur, wenn du die Sitzung mit --worktree direkt in der Kopie öffnen willst. In der Desktop-App wählst du beim Start der Sitzung die Option worktree.

Und wenn ich in der Kopie Arbeit brauche, die ich noch nicht hochgeladen habe?

Du hast zwei Möglichkeiten. Am einfachsten pushst du, bevor du die Kopien öffnest. Oder du bittest Claude, in den Einstellungen worktree.baseRef auf "head" zu setzen: Dann starten die Kopien da, wo du auf deinem Computer bist, mit den Commits, die du noch nicht hochgeladen hast.

Sehen sich die Kopien gegenseitig?

Die Dateien nicht, die sind getrennt. Die Git-Geschichte ist aber gemeinsam: Deshalb kannst du aus der Hauptsitzung die Branches der Kopien sehen und zusammenführen, wie in Schritt 3. Was eine Kopie noch nicht committet hat, sieht man von den anderen Branches aus allerdings nicht.

← Alle Anleitungen