> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Worktrees

> git-Worktrees automatisch für parallele Cascade-Aufgaben einrichten

Windsurf unterstützt die Verwendung von git-Worktrees, um Cascade-Aufgaben parallel auszuführen, ohne Ihren Haupt-Workspace zu beeinträchtigen.

Bei Verwendung von Worktrees erhält jede Cascade-Konversation ihre eigene Sitzung, sodass Cascade Änderungen vornehmen oder Code erstellen und testen kann, ohne Ihren Haupt-Workspace zu beeinflussen.

<div id="basic-worktree-usage">
  ## Grundlegende Verwendung von Worktrees
</div>

Die einfachste Möglichkeit, mit Worktrees zu beginnen, besteht darin, unten rechts im Cascade-Eingabefeld in den „Worktree“-Modus zu wechseln.

<Frame>
  <img style={{ maxHeight: "500px" }} src="https://mintcdn.com/codeium/U6QOrK-OfUtO4wfJ/assets/windsurf/worktree-toggle.png?fit=max&auto=format&n=U6QOrK-OfUtO4wfJ&q=85&s=8bb3e54349d5c84d4db81210a67ee931" width="873" height="224" data-path="assets/windsurf/worktree-toggle.png" />
</Frame>

<Note>
  Derzeit können Sie nur zu Beginn einer Cascade-Sitzung in einen Worktree wechseln. Unterhaltungen können nach dem Start nicht in einen anderen Worktree verschoben werden.
</Note>

Nachdem Cascade Dateiänderungen im Worktree vorgenommen hat, können Sie auf „Merge“ klicken, um diese Änderungen wieder in Ihren Haupt-Workspace zu übernehmen.

<Frame>
  <img style={{ maxHeight: "500px" }} src="https://mintcdn.com/codeium/U6QOrK-OfUtO4wfJ/assets/windsurf/worktree-merge.png?fit=max&auto=format&n=U6QOrK-OfUtO4wfJ&q=85&s=bb47b232dd861f3e37255b9b82fb18bc" width="724" height="98" data-path="assets/windsurf/worktree-merge.png" />
</Frame>

<div id="location">
  ## Speicherort
</div>

Worktrees sind nach Repository-Namen in `~/.windsurf/worktrees/<repo_name>` organisiert.

Jeder Worktree erhält einen eindeutigen, zufälligen Namen.

Um eine Liste aktiver Worktrees anzuzeigen, können Sie `git worktree list` im Repository-Verzeichnis ausführen.

<Warning>
  Da Worktrees in einem anderen Verzeichnis als Ihr ursprüngliches Projekt liegen, können **Build-Systeme oder Tools, die auf relativen Pfaden basieren** (z. B. `../shared-lib`-Verweise, per Symlink eingebundene Abhängigkeiten oder Monorepo-Quellabhängigkeiten, die über den Pfad aufgelöst werden) innerhalb eines Worktrees fehlschlagen. Wenn Ihr Projekt relative Pfade außerhalb des Repository-Stammverzeichnisses verwendet, konfigurieren Sie einen [`post_setup_worktree`-Hook](./worktrees#setup-hook), um die notwendigen Symlinks zu erstellen oder die benötigten Dateien an die erwarteten Speicherorte zu kopieren.
</Warning>

<div id="setup-hook">
  ## Setup-Hook
</div>

Jeder Worktree enthält eine Kopie der Repository-Dateien, jedoch keine `.env`-Dateien oder andere Pakete, die nicht unter Versionskontrolle stehen.

Wenn in jedem Worktree zusätzliche Dateien oder Pakete verfügbar sein sollen, kann der `post_setup_worktree`-[Hook](./hooks#post_setup_worktree) verwendet werden, um sie in das Worktree-Verzeichnis zu kopieren.

Der `post_setup_worktree`-Hook wird ausgeführt, nachdem jeder Worktree erstellt und konfiguriert wurde. Er wird innerhalb des neuen **Worktree**-Verzeichnisses ausgeführt.

Die Umgebungsvariable `$ROOT_WORKSPACE_PATH` verweist auf den ursprünglichen Workspace-Pfad und kann verwendet werden, um auf Dateien zuzugreifen oder Befehle relativ zum ursprünglichen Repository auszuführen.

<div id="example">
  ### Beispiel
</div>

Umgebungsdateien kopieren und Abhängigkeiten installieren, sobald ein neuer Worktree erstellt wird.

**Konfiguration** (in `.windsurf/hooks.json`):

```json theme={null}
{
  "hooks": {
    "post_setup_worktree": [
      {
        "command": "bash $ROOT_WORKSPACE_PATH/hooks/setup_worktree.sh",
        "show_output": true
      }
    ]
  }
}
```

**Skript** (`hooks/setup_worktree.sh`):

```bash theme={null}
#!/bin/bash

# Umgebungsdateien aus dem ursprünglichen Workspace kopieren
if [ -f "$ROOT_WORKSPACE_PATH/.env" ]; then
    cp "$ROOT_WORKSPACE_PATH/.env" .env
    echo "Copied .env file"
fi

if [ -f "$ROOT_WORKSPACE_PATH/.env.local" ]; then
    cp "$ROOT_WORKSPACE_PATH/.env.local" .env.local
    echo "Copied .env.local file"
fi

# Abhängigkeiten installieren
if [ -f "package.json" ]; then
    npm install
    echo "Installed npm dependencies"
fi

exit 0
```

Dieser Hook stellt sicher, dass für jeden Worktree automatisch die erforderliche Umgebungskonfiguration eingerichtet und die benötigten Abhängigkeiten installiert werden.

<div id="cleanup">
  ## Bereinigung
</div>

Windsurf bereinigt automatisch ältere Worktrees, wenn ein neuer Worktree erstellt wird, um übermäßige Speicherplatznutzung zu verhindern. Jeder Workspace kann bis zu **20** Worktrees haben.

Worktrees werden anhand der Zeit ihres letzten Zugriffs bereinigt – die ältesten werden zuerst entfernt. Diese Bereinigung erfolgt pro Workspace und stellt sicher, dass Worktrees aus verschiedenen Repositories unabhängig voneinander bleiben.

Wenn du außerdem ein Cascade-Gespräch manuell löschst, entfernt Windsurf automatisch den zugehörigen Worktree.

<div id="source-control-panel">
  ## Source-Control-Panel
</div>

Standardmäßig zeigt Windsurf im SCM-Panel keine Worktrees an, die von Cascade erstellt wurden.
Sie können in Ihren Einstellungen `git.showWindsurfWorktrees` auf `true` setzen, um dieses Verhalten zu ändern und die Worktrees im SCM-Panel anzuzeigen.
