Lern-MotorEin Ordner pro Branch

12 min · Stand 2026-09-09

Ein Ordner pro Branch

Warum ein zweiter Ordner statt Branch-Wechsel — und was teilen sich die beiden?

Neben dem trybe-Ordner liegen bei Johannes fünfzehn weitere: trybe-monorepo-wt-calendar, trybe-monorepo-wt-notes, trybe-monorepo-wt-desk-golive. Das sind keine Kopien des Repos und keine alten Stände, sondern Worktrees — ein Ordner pro Branch, alle an derselben Historie. Diese Lektion erklärt, welches Problem sie lösen, was Git dabei teilt und was nicht, und was make wt-new zusätzlich für dich anlegt.

Was Branch-Wechsel mit dem Ordner macht

Ein Branch ist ein Zettel, und es gibt einen Ordner. Beim Wechsel tauscht Git den Inhalt des Ordners gegen den Stand des anderen Commits. Das geht gut, solange der Ordner sauber ist. Mit halbfertiger Arbeit gibt es zwei Ausgänge, und beide sind unangenehm.

Entweder Git weigert sich, weil eine geänderte Datei auf dem anderen Branch anders aussieht und beim Wechsel überschrieben würde. Oder Git lässt dich wechseln und nimmt die Änderungen einfach mit — dann liegen die Notes-Dateien plötzlich im Calendar-Branch, und das nächste git add -A committet sie dort. Genau so landen Dateien in Branches, in die sie nie sollten.

Wechseln mit halbfertiger Arbeit
$

Enter führt aus · Tab vervollständigt den nächsten Befehl · Ausgaben gekürzt

Du stehst auf proto/notes mit zwei geänderten Dateien und tippst git switch master. Was passiert mit den Änderungen?

Ein zweiter Ordner an derselben Historie

git worktree add legt einen weiteren Ordner an und checkt darin einen Branch aus. Der neue Ordner hat keinen eigenen .git-Ordner, sondern eine kleine Datei .git, die auf die Historie des Hauptordners zeigt. Commits, Branches, das Lesezeichen origin/master — alles ist eines und wird geteilt. Getrennt sind nur die Dateien auf der Platte und das, was darin gerade geändert ist.

Ein Commit im Worktree ist deshalb im Hauptordner sofort sichtbar, ohne push, ohne pull. Und git add -A im einen Ordner kann die Dateien des anderen gar nicht sehen. Eine Regel gibt es: Ein Branch kann nur in einem Ordner ausgecheckt sein — jeder Worktree bekommt seinen eigenen.

Einen Worktree anlegen
$

Enter führt aus · Tab vervollständigt den nächsten Befehl · Kennungen sind Beispielwerte

~/Code/trybe/ · zwei Ordner, eine Historie

Du committest im Worktree-Ordner auf proto/booklet. Musst du pushen, damit der Hauptordner den Commit kennt?

make wt-new: was Git nicht trennt

Für einen Prototyp reicht git worktree add plus pnpm install: Prototypen haben kein Backend, keine Datenbank, und ihren Dev-Port trägst du selbst in die package.json ein. Sobald du aber an einer echten App arbeitest, die das Backend braucht, teilen sich zwei Ordner Dinge, von denen Git nichts weiß: die Datenbank, die Ports der Dev-Server, die .env mit den Zugangsdaten. Zwei Backends auf Port 8000 gegen dieselbe Datenbank — das geht schief.

make wt-new NAME=… macht den Git-Schritt und räumt genau diese Reste weg: eigener Ordner ../trybe-monorepo-wt-<name> auf Branch wt/<name>, pnpm install, eine eigene Datenbank trybe_<name> als Klon einer Vorlage, eigene Ports und eine .env, in der beides schon steht.

Worktree mit eigener Datenbank
$

Enter führt aus · Tab vervollständigt den nächsten Befehl · Ausgaben gekürzt, Ports sind Beispielwerte

Zwei Ordner, ein Repo — was ist getrennt, und wer trennt es?

0 von 7 zugeordnet

Häufige Fragen

Kann ich denselben Branch in zwei Ordnern haben?

Nein, Git verweigert das: „proto/booklet is already checked out at …". Sonst wüsste niemand, welcher Ordner den Zettel beim nächsten Commit weiterrückt. Jeder Worktree bekommt seinen eigenen Branch — oder du wechselst im vorhandenen Ordner.

Wie komme ich zwischen den Ordnern hin und her?

Mit cd, wie zwischen allen Ordnern. Der Editor öffnet den Worktree als eigenes Projektfenster. Und Claude Code startest du in dem Ordner, in dem es arbeiten soll — ein Claude pro Worktree, dann kommen sich zwei Läufe nie ins Gehege.

Worktree löschen ohne make?

git worktree remove ../trybe-monorepo-wt-booklet entfernt den Ordner; der Branch bleibt bestehen und lässt sich mit git branch -d proto/booklet löschen, sobald er gemergt ist. Ordner einfach in den Papierkorb ziehen geht auch, dann räumt git worktree prune die Verwaltungsreste auf.

Muss ich in jedem Worktree master reinmergen?

Ja, je Branch. Der Merge gehört zum Branch, nicht zum Ordner. Ein Worktree, in dem du drei Tage nicht warst, hat drei Tage master-Rückstand — der Morgen-Merge aus der letzten Lektion gilt in jedem Ordner, in dem du an dem Tag arbeitest.

Warum liegt der Worktree neben dem Repo und nicht darin?

Läge er darin, wäre er aus Sicht des Hauptordners ein unbekannter Unterordner voller Dateien — git status würde ihn anzeigen, git add -A würde ihn einsammeln. Nebenan ist er unsichtbar für den anderen. Deshalb der Geschwister-Ordner mit dem Präfix trybe-monorepo-wt-.