Zum Hauptinhalt springen
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.

Grundlegende Verwendung von Worktrees

Die einfachste Möglichkeit, mit Worktrees zu beginnen, besteht darin, unten rechts im Cascade-Eingabefeld in den „Worktree“-Modus zu wechseln.
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.
Nachdem Cascade Dateiänderungen im Worktree vorgenommen hat, können Sie auf „Merge“ klicken, um diese Änderungen wieder in Ihren Haupt-Workspace zu übernehmen.

Speicherort

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.
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, um die notwendigen Symlinks zu erstellen oder die benötigten Dateien an die erwarteten Speicherorte zu kopieren.

Setup-Hook

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 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.

Beispiel

Umgebungsdateien kopieren und Abhängigkeiten installieren, sobald ein neuer Worktree erstellt wird. Konfiguration (in .windsurf/hooks.json):
{
  "hooks": {
    "post_setup_worktree": [
      {
        "command": "bash $ROOT_WORKSPACE_PATH/hooks/setup_worktree.sh",
        "show_output": true
      }
    ]
  }
}
Skript (hooks/setup_worktree.sh):
#!/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.

Bereinigung

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.

Source-Control-Panel

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.