Git-Worktrees
Erstelle unabhängige Checkouts für parallelle Aufgaben, dann füge sie bei Abschluss der Arbeit zusammen, veröffentliche sie oder entferne sie.
Ein Git Worktree gibt einer Aufgabe einen separaten Arbeitsverzeichnis im gleichen Repository. Dream öffnet es als ein weiteres Projekt mit eigenen Chats und Werkzeugen. Verwenden Sie Worktrees, wenn Agenten unabhängig editieren müssen, ohne dass sich ihre Checkouts gegenseitig beeinflussen.
Ein Worktree erstellen#
Beginnen Sie mit einem Projekt, das ein Git-Repository ist mit einem bereits committeten Basis-Referenz.
- Öffne den Branch-Wechsler unter dem Chat.
- Wählen Sie Neuer Arbeitsbaum.
- Geben Sie einen Namen für den neuen Zweig ein, z. B.
fix-settings-persistence. - Setnen Basisreferenz auf den Commit oder Branch, von dem Sie starten möchten, z. B.
main. - Klicken Sie auf Arbeitsbaum erstellen.
Dream erstellt die Checkout und öffnet das Projekt. Überprüfen Sie den Branch im Worktree unter dem Chat, bevor die Aufgabe gesendet wird. Befehle und Agenten-Änderungen in diesem Projekt verwenden den neuen Ordner.
Der Basis-Ref muss im lokalen Repository existieren. Wenn Sie neuere Remote-Commits benötigen, holen Sie diese über Ihr normales Git-Workflow vor der Erstellung des Worktree.
Eine Konversation in ein Worktree übertragen#
Aus einer Nachricht wählen Ab dieser Nachricht fortfahren… → Neuer Arbeitsbaum. Dream kopiert das Gespräch ab dieser Nachricht, verwendet den aktuellen Branch als Basis und erzeugt einen neuen Branch-Namen.
Verwenden Sie diesen Shortcut, wenn der Agent mit der früheren Diskussion fortsetzen soll. Verwenden Sie den Workflow für den Branch-Switcher, wenn Sie einen benutzerdefinierten Basis- und Branch-Namen auswählen müssen. Siehe Gespräche verzweigen, um den Unterschied zwischen Nachrichtenkopieren und Dateikopieren zu erfahren.
Worktrees starten von der kommitten Git-Geschichte. Unkommitted Änderungen im ursprünglichen Projekt werden nicht kopiert. Ein Chat, der von einer früheren Nachricht abgeleitet ist, erzeugt das Dateisystem nicht zu diesem Zeitpunkt im Gespräch.
Zwischen Checkouts wechseln#
Nutzen Sie die Projekttabs, um zwischen dem ursprünglichen Checkout und dem Worktree-Projekt zu wechseln. App-verwaltete Worktree erscheinen auch im Chat-Verlauf des Elternprojekts, wo Sie sie erneut öffnen können.
Überprüfen und Änderungen aus dem Projekt, wo sie vorgenommen wurden, commiten. Das Erstellen eines Worktree führt keine Fusion seiner Änderungen in den ursprünglichen Branch; verwenden Sie die Footer-Option Git-Aktionen, wenn die Arbeit fertig ist.
Ein Worktree abschließen#
Das Zusammenführen, die Erstellung eines Pull-Requests und die Entfernung eines Worktree sind separate Aktionen im Menü Git-Aktionen im Footer. Commit die Änderungen, die Sie einbeziehen möchten, bevor Sie zusammenführen.
- Im Worktree-Projekt wählen Sie unter dem Chat die Option Vereinen in base aus den Git-Aktionen.
- Überprüfen Sie den Überblick: den Basis-Branch, wie viele Commits der Branch vor- und hinterher ist, die geänderten Dateien und den aktuellen Haupt-Checkout-Branch sowie ob dieser sauber ist.
- Lesen Sie die Liste der Commits und erweitern Sie eine Datei, um deren Diff zu inspizieren.
- Verwenden Sie Änderungen committen..., wenn nötig. Ungecommittete Änderungen bleiben im Worktree und werden nicht zusammengefügt.
- Wählen Sie Fügen Sie in base ein. Dream fügt die in der Hauptarbeitssitzung committen Arbeit ein und wechselt gegebenenfalls auf den Base-Branch.
- Überprüfen Sie das Ergebnis, wählen dann Worktree behalten oder Worktree und Branch entfernen. Die Entfernung nach dem Zusammenführen wird nur angeboten, wenn der Worktree sauber ist.
Statt für die Prüfung zu veröffentlichen, verwenden Sie Git-Aktionen → Pull-Anfrage erstellen und folgen Sie Git-Arbeitsabläufen. Die Erstellung einer PR behält das Worktree bei.
Verwende Git-Aktionen → Arbeitsbaum entfernen, um die Checkout-Verzeichnis zu entfernen, während die Branch beibehalten wird. Wenn es uncommitted Änderungen gibt, committe diese zuerst oder wähle explizit Nicht committete Änderungen verwerfen.
Die Löschung eines worktree löscht seinen Ordner und schließt dessen Projekt. Die Chats des worktree-Projects werden mit ihm verworfen und erscheinen weder in Chatverlauf noch in Zuletzt geschlossen. Wenn Sie eine Diskussion behalten möchten, teilen Sie sie in den Elternspace auf, bevor Sie sie abschließen.
Wenn eine Option nicht verfügbar ist#
| Nachricht | Was zu tun ist |
|---|---|
| Dieser Branch hat keine Commits vor base | Geben Sie den Commit ein, den Sie behalten möchten, oder wählen Sie Entfernen worktree |
| Der Haupt-Checkout enthält ungecommittete Dateien | Verwenden Sie einen Commit oder Stash, um Änderungen im Elternprojekt vor dem Zusammenführen zu speichern |
| Der Haupt-Checkout hat einen Merge oder Rebase im Gange | Das Operation in dem Elternprojekt beenden oder abbrechen |
| Dieser Zweig teilt keine Geschichte mit base | Füge über deine eigene Git-Arbeitsschritte hinzu |
| Kein Git-Remote ist konfiguriert | Ein Remote vor der Erstellung eines Pull Requests hinzufügen |
| GitHub CLI (gh) ist nicht verfügbar | GitHub CLI installieren und authentifizieren |
Wenn das Fügen Konflikte erzeugt, beendet Dream es und gibt Das Fügen in base erzeugte Konflikte. Das Fügen wurde abgebrochen und nichts wurde geändert aus, zusammen mit den konfliktbehafteten Dateien. Bringen Sie den Basisbranch in das Worktree, lösen Sie die Konflikte, commiten Sie und führen dann erneut Fügen in base aus.
Ein Worktree aus dem Elternprojekt entfernen#
Sie können ein Worktree auch ohne das Bestätigungsfenster entfernen:
- Sichern Sie die Arbeit, die Sie brauchen, durch einen Commit und, falls nötig, durch einen Push oder durch das Öffnen eines PR.
- Stoppe Prozesse im Worktree, wie eine lokale Anwendung, die in ihrem Terminal läuft.
- Öffnen Sie das Chat-Verlauf-Panel des Elternprojekts und suchen Sie das Worktree.
- Verwenden Sie seine Entfernungsfunktion und prüfen Sie die Bestätigung.
- Bestätigen Sie Arbeitsbaum entfernen, wenn Sie diesen Checkout nicht mehr benötigen.
Die Löschung entfernt das Worktree-Verzeichnis aus dem Speicher. Git lehnt die Löschung ab, wenn es uncommitted Änderungen enthält. Gehe zurück zu diesem Projekt und überprüfe die Änderungen, bevor du erneut versuchst.
Die Schließung eines Projekttabs entfernt ihn nur aus dem offenen Arbeitsbereich; die Löschung eines Worktree löscht seine Checkout. Für Commit- und PR-Schritte siehe Git-Arbeitsabläufe.