Git 工作樹
為並行任務建立獨立檢出,然後在工作完成時合併、釋出或刪除它們。
一個 Git 工作樹為任務在同一個倉庫中提供獨立的工作目錄。Dream 會將其開啟為另一個專案,擁有自己的聊天記錄和工具。當代理需要獨立編輯而不會改變彼此的檢出狀態時,應使用工作樹。
建立一個工作樹#
從一個 Git 倉庫開始,該倉庫具有一個已提交的基礎引用。
- 開啟聊天區域下方的分支切換器。
- 選擇 新工作樹。
- 為新分支輸入一個名稱,例如
fix-settings-persistence。 - 將 基礎參照 設定為您想要開始的提交或分支,例如
main。 - 點選 建立工作樹。
Dream 建立檢出並開啟其專案。在傳送任務前,請檢查聊天框下方顯示的工作樹分支。該專案中的命令和代理編輯使用新目錄。
基礎引用必須存在於您的本地倉庫中。如果您需要最新的遠端提交,請透過正常的 Git 工作流獲取它們,然後再建立工作樹。
將對話攜帶進一個工作樹#
從一條訊息中選擇 從此訊息繼續… → 新工作樹。Dream 複製該訊息之後的對話內容,以當前分支為基礎,並生成一個新分支名稱。
在您希望代理繼續之前的討論時使用此快捷方式。當需要選擇自定義的基礎名稱和分支名稱時,請使用分支切換工作流程。有關複製訊息與複製檔案之間的區別,請參見 分支對話。
工作樹從已提交的 Git 歷史記錄開始。原始專案中的未提交更改不會被複制。一條聊天記錄從之前的訊息分支出來時,不會在該對話點重建檔案系統。
在不同檢出版本之間切換#
使用專案分頁在原始檢出和工作樹專案之間切換。由應用程式管理的工作樹也會出現在父專案中的聊天記錄面板中,你可以在此處再次開啟它們。
檢視並提交變更,這些變更是在專案中產生的。建立一個工作樹不會將其變更合併到原始分支中;當工作完成時,請使用頁腳的 Git 動作。
完成一個工作樹#
合併、建立拉取請求以及移除工作樹是 footer 中 Git 動作 菜單中的獨立動作。在合併之前,請提交您希望包含的變更。
- 在工作樹專案中,選取 合併至基礎分支,此選項位於聊天下方的 Git 操作 選單中。
- 審查摘要:基礎分支,該分支比主分支領先和落後多少次提交,已更改的檔案,以及主檢出分支的當前分支名稱和是否乾淨。
- 閱讀提交記錄並展開任何檔案以檢查其差異。
- 若需使用 提交變更...,未提交的變更會留在工作樹中,且不會被合併。
- 選擇 合併至 base。Dream 會將已提交的變更整合到主檢查點中,必要時會切換至 base 分支。
- 檢視結果後,請選擇 保留工作樹 或 刪除工作樹和分支。合併後移除工作樹僅在工作樹為清潔狀態時提供。
若要發布以供審查,請使用 Git 動作 → 建立拉取請求,並遵循 Git 工作流程。建立拉取請求會保留工作樹。
使用 Git 動作 → 刪除工作樹 來移除檢查出的內容,同時保留其分支。若其包含未提交的變更,請先提交這些變更,或明確選取 捨棄未提交的變更。
刪除一個工作樹會刪除其資料夾並關閉其專案。該工作樹專案的對話將一併遺失,不會出現在聊天記錄或最近關閉中。若想保留對話,請在完成前將其分支至父工作空間 將對話分支至父工作空間。
當某個選項不可用時#
| 訊息 | 該做什麼 |
|---|---|
| 該分支在 base 之後沒有提交記錄 | 提交您想要保留的內容,或選擇移除工作樹 |
| 主檢出分支有未提交的檔案 | 在合併之前,將更改提交或暫存到父專案中 |
| 主檢出分支正在進行合併或變基操作 | 在父專案中完成或中止該操作 |
| 該分支與 base 沒有共享歷史記錄 | 透過你自己的 Git 工作流進行合併 |
| 未配置 Git 遠端倉庫 | 在建立拉取請求之前新增遠端倉庫 |
| GitHub CLI (gh) 無法使用 | 安裝並認證 GitHub CLI |
如果合併產生衝突,Dream 會中止此操作,並顯示 合併至 base 產生了衝突。合併已被中止,沒有任何變更,並附上衝突的檔案。將 base 分支帶入工作樹,解決衝突,提交變更,然後再次執行 合併至 base。
從父專案中移除一個工作樹#
你也可以在不顯示完成對話方塊的情況下移除一個工作樹:
- 透過提交所需的工作,並在適當情況下推送它或開啟一個拉取請求來儲存你的工作。
- 停止使用工作樹的程序,例如在終端中執行的本地應用程式。
- 開啟父專案中的 聊天記錄 面板並找到工作樹。
- 使用其刪除操作並檢視確認。
- 在不再需要該檢出時,確認 刪除工作樹。
刪除會從磁碟上移除工作樹目錄。Git在該目錄包含未提交的更改時會拒絕刪除。返回該專案並檢查更改後再嘗試。
僅關閉專案標籤頁會將其從開啟的工作空間中移除;刪除工作樹會刪除其檢出內容。關於提交和拉取請求步驟,請參見 Git 工作流程。