Worktree Git
Crea checkout indipendenti per compiti paralleli, poi li unisci, pubblica o elimina quando il lavoro è completato.
Un worktree Git fornisce a un'attività un'area di lavoro separata nello stesso repository. Dream lo apre come un altro progetto, con i propri chat e strumenti. Utilizzare worktrees quando gli agenti devono modificare indipendentemente senza alterare il checkout degli altri.
Crea un worktree#
Inizia da un progetto che è un repository Git con una riferimento base committato.
- Apri il selettore di ramificazioni sotto il chat.
- Scegli Nuovo albero di lavoro.
- Inserisci un nome per il nuovo Ramo, ad esempio
fix-settings-persistence. - Imposta il Rif. base al commit o alla ramifica da cui vuoi partire, ad esempio
main. - Fai clic su Crea albero di lavoro.
Dream crea il checkout e apre il suo progetto. Verificare il ramo worktree visualizzato sotto il chat prima di inviare il compito. I comandi e le modifiche dell'agente in questo progetto utilizzano la nuova directory.
La riferimento base deve esistere nel vostro repository locale. Se necessitate di commit remoti più recenti, recuperateli attraverso il vostro normale flusso di Git prima di creare il worktree.
Portare una conversazione in un worktree#
Da un messaggio, scegli Continua da questo messaggio… → Nuovo albero di lavoro. Dream copia la conversazione fino a quel messaggio, utilizza la ramifica attuale come base e genera un nuovo nome di ramifica.
Utilizza questo shortcut quando vuoi che l'agente prosegua con la discussione precedente. Utilizza il workflow del ramificatore quando hai bisogno di scegliere un nome di base e ramo personalizzati. Vedi Ramificare le conversazioni per la differenza tra copiare messaggi e copiare file.
I worktrees partono dalla storia Git committata. I cambiamenti non commessi nel progetto originale non vengono copiati. Un chat derivato da un messaggio precedente non ricrea il filesystem in quel punto della conversazione.
Passare tra i checkouts#
Usa le schede progetto per passare tra il checkout originale e il progetto worktree. I worktree gestiti dal sistema appaiono anche nel panel Cronologia chat del progetto padre, dove possono essere riaperti.
Rivedi e crea i commit delle modifiche nel progetto in cui sono state apportate. Creare un worktree non unisce le sue modifiche al branch originale; usa Azioni Git nel piè di pagina quando il lavoro è pronto.
Completa un worktree#
L'unione, la creazione di un pull request e la rimozione di un worktree sono azioni separate nel menu Azioni Git del footer. Committate i cambiamenti che desiderate includere prima di unire.
- Nel progetto worktree, scegli Fusione in base dalle Azioni Git sotto il chat.
- Controlla il riassunto: il ramo base, quante committ sono in avanti e indietro rispetto al ramo, i file modificati, e il ramo attuale del principale e se è pulito.
- Leggi l'elenco dei commit e espandi qualsiasi file per esaminare il suo diff.
- Usa Esegui il commit delle modifiche... se necessario. I cambiamenti non commessi rimangono nel worktree e non vengono integrati.
- Scegli Unisci in base. Dream unisce il lavoro commesso nel checkout principale, passando alla ramifica base se necessario.
- Verifica il risultato, poi scegli Mantieni il worktree o Rimuovi worktree e branch. La rimozione dopo il merge è offerta solo quando il worktree è pulito.
Per pubblicare per la revisione, usa Azioni Git → Crea richiesta pull e segui Flussi di lavoro Git. Creare una richiesta di pull mantiene il worktree.
Usa Azioni Git → Rimuovi l'albero di lavoro per rimuovere il checkout mantenendo il suo ramo. Se contiene modifiche non ancora commesse, commettile prima o seleziona esplicitamente Scarta le modifiche senza commit.
Eliminare un worktree elimina il suo directory e chiude il suo progetto. I chat del progetto worktree vengono eliminati insieme e non appaiono nella Cronologia chat o nei Chiusi di recente. Se desideri conservare una conversazione, dividerla nel workspace padre prima di completarla.
Quando un'opzione non è disponibile#
| Messaggio | Cosa fare |
|---|---|
| Questo ramo non ha commit in avanti rispetto a base | Committa il lavoro che vuoi mantenere, o scegli Elimina worktree |
| Il principale checkout ha file non ancora commessi | Committa o memorizza le modifiche nel progetto padre prima di unire |
| Il principale checkout ha un merge o un rebase in corso | Completa o annulla quell'operazione nel progetto padre |
| Questo ramo non condivide nessuna storia con base | Fusiona attraverso il proprio flusso di Git |
| Nessun remoto Git è configurato | Aggiungi un remoto prima di creare una richiesta di pull |
| Il CLI GitHub (gh) non è disponibile | Installa e autentica il CLI di GitHub |
Se l'unione genera conflitti, Dream li annulla e segnala L'unione in base ha generato conflitti. L'unione è stata annullata e nulla è stato modificato, insieme ai file in conflitto. Porta il ramo base nel worktree, risolve i conflitti, effettua il commit e poi esegui nuovamente Unione in base.
Elimina un worktree dal progetto padre#
È anche possibile rimuovere un worktree senza il dialogo di conferma:
- Preserva il lavoro che necessiti effettuandone un commit e, se appropriato, spostandolo o aprirne una richiesta di integrazione.
- Ferma i processi utilizzando il worktree, ad esempio un'applicazione locale in esecuzione nel suo terminale.
- Apri il panello Cronologia chat del progetto padre e cerca il worktree.
- Usi l'azione rimuovi e verifica la conferma.
- Conferma Rimuovi l'albero di lavoro quando non hai più bisogno di quel checkout.
L'eliminazione elimina il cartella worktree dal disco. Git rifiuta l'eliminazione quando contiene modifiche non ancora commesse. Tornare a quel progetto e verificare le modifiche prima di riprovare.
Chiudere un'asta progetto la rimuove solo dal workspace aperto; rimuovere un worktree elimina il suo checkout. Per i passaggi di commit e PR, vedi Flussi di lavoro Git.