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

# Worktrees

> Git-Worktrees automatisch für parallele Cascade-Tasks einrichten

Devin Desktop unterstützt Git-Worktrees, um Cascade-Tasks parallel auszuführen, ohne Ihren Haupt-Workspace zu beeinträchtigen.

Bei der Verwendung von Worktrees erhält jede Cascade-Unterhaltung ihre eigene Sitzung. So kann Cascade Änderungen vornehmen sowie Code erstellen und testen, ohne Ihren Haupt-Workspace zu beeinträchtigen.

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

Am einfachsten beginnen Sie mit Worktrees, indem Sie unten rechts im Cascade-Eingabebereich in den Modus „Worktree“ wechseln.

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

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

Nachdem Cascade im Worktree Dateiänderungen 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/cognitionai/WE51TvKjsiyk1ZHl/desktop/assets/windsurf/worktree-merge.png?fit=max&auto=format&n=WE51TvKjsiyk1ZHl&q=85&s=574816f7a9d6a1b49b6d931c2ede8051" width="724" height="98" data-path="desktop/assets/windsurf/worktree-merge.png" />
</Frame>

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

Worktrees werden innerhalb von `~/.windsurf/worktrees/<repo_name>` nach Repo-Namen organisiert.

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

Um eine Liste der aktiven Worktrees anzuzeigen, können Sie innerhalb des Repository-Verzeichnisses `git worktree list` 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. Verweise auf `../shared-lib`, per Symlink eingebundene Abhängigkeiten oder Quellabhängigkeiten in einem Monorepo, die per Pfad bezogen werden), innerhalb eines Worktrees fehlschlagen. Wenn Ihr Projekt relative Pfade außerhalb des Root-Verzeichnisses des Repositorys verwendet, konfigurieren Sie einen [`post_setup_worktree` hook](./worktrees#setup-hook), um die erforderlichen 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 Ihrer Repository-Dateien, aber keine `.env`-Dateien oder anderen Pakete, die nicht versionskontrolliert sind.

Wenn Sie in jedem Worktree zusätzliche Dateien oder Pakete einbinden möchten, können Sie den [Hook](./hooks#post_setup_worktree) `post_setup_worktree` verwenden, um sie in das Worktree-Verzeichnis zu kopieren.

Der Hook `post_setup_worktree` wird ausgeführt, nachdem jeder Worktree erstellt und konfiguriert wurde. Er wird im neuen **Worktree**-Verzeichnis 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>

Kopieren Sie Umgebungsdateien und installieren Sie Abhängigkeiten, 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

# Environment-Dateien 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

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

exit 0
```

Dieser Hook stellt sicher, dass für jeden Worktree die erforderliche Umgebungskonfiguration vorhanden ist und Abhängigkeiten automatisch installiert werden.

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

Devin Desktop bereinigt beim Erstellen eines neuen Worktree automatisch ältere Worktrees, um eine übermäßige Nutzung des Speicherplatzes zu verhindern. Jeder Workspace kann bis zu **20** Worktrees haben.

Worktrees werden danach bereinigt, wann zuletzt auf sie zugegriffen wurde – die ältesten werden zuerst entfernt. Diese Bereinigung erfolgt pro Workspace, sodass Worktrees aus verschiedenen Repositorys voneinander unabhängig bleiben.

Wenn du außerdem manuell eine Cascade-Unterhaltung löschst, löscht Devin Desktop automatisch den zugehörigen Worktree.

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

Standardmäßig zeigt Devin Desktop im SCM-Panel keine von Cascade erstellten Worktrees an.
Sie können `git.showWindsurfWorktrees` in Ihren Settings auf `true` setzen, um dies zu ändern und die Worktrees im SCM-Panel sichtbar zu machen.
