工作區隔離
Verdent 如何透過 git worktrees 分隔平行的程式碼變更
工作區隔離會透過 git worktrees 在檔案系統層級分隔平行的程式碼變更。每個工作區都有自己的目錄、分支 checkout、檔案與 staging 狀態。
目前 Verdent Desktop 介面未提供手動建立工作區的功能。New Workspace 按鈕、其鍵盤快捷鍵,以及 Duplicate to New Workspace 都已隱藏。複製回應會在目前工作區中建立新任務。
你將學到什麼
- 工作區隔離如何避免衝突
- git worktrees 如何實現隔離
- Base Workspace 與 Workspaces 的差異
- 既有工作區與 Verdent 管理的工作區如何顯示在介面中
- 工作區管理的最佳實務
什麼是工作區隔離?
當 Verdent 在不同工作區中執行工作時,某個 worktree 的變更不會修改另一個 worktree 的檔案或 staging 狀態。這讓平行實作與審查更安全。
運作方式
| 層級 | 運作方式 |
|---|---|
| 目錄 | 每個工作區都是隔離的目錄 |
| 分支 | 每個工作區都有自己的分支 checkout |
| 檔案 | 某個工作區中的檔案變更不會影響其他工作區 |
| Staging | 每個工作區都有自己的 staging area |
優點
零干擾
檔案變更會保留在不同的 worktree 目錄中
安全實驗
嘗試有風險的變更,而不影響穩定的程式碼
清楚比較
使用 git diff 比較不同工作區中的做法
選擇性 Rebase
只 rebase 你信任的結果
Base Workspace vs Workspaces
Base Workspace
Base workspace 是你原本的 repository checkout,作為預設的起點。
| 特性 | 說明 |
|---|---|
| 位置 | 你原本的 git clone 或 init 位置 |
| 主要分支 | 通常位於 main 或 development 分支 |
| 參考點 | 用於比較實驗性工作的來源 |
何時使用 Base:
- 不需要隔離的快速變更
- 比較實驗性工作的參考點
- 當你希望變更直接進入主分支時
- 不需要平行執行的簡單任務
Workspace
Workspace 是使用 git worktrees 建立的隔離工作環境,具有自己的獨立分支 checkout 與檔案狀態。
當支援的工作流程需要隔離的程式碼變更時,Verdent 可以使用工作區。既有工作區會持續與其專案關聯,並且可以包含多個任務。
使用既有工作區
已屬於某個專案的工作區會繼續在 Projects panel 中與該專案分組。選取工作區即可檢視其任務與檔案狀態。
- 同一個工作區內的任務共用其檔案,但保有各自獨立的對話上下文。
- 切換到另一個工作區會變更目前作用中的 worktree 與分支上下文。
- 複製回應會讓複製出的任務保留在目前工作區中。
- 只有在 commit、rebase,或以其他方式保留你需要的工作之後,才刪除工作區。
Rebase 工作區變更
當你準備好將工作區變更整合回主分支時:
使用 Verdent UI
完成工作
在工作區中完成工作
審查變更
點擊中間面板中的 Task Changes 以審查所有修改
Rebase 到主分支
在 Workspace Bar 中點擊 Workspace Actions → Rebase to main branch
解決衝突
若系統提示,請解決任何衝突
驗證
確認前先審查變更
讓工作區保持最新
使用 Workspace Actions → Sync with main branch 將主分支的最新變更拉進你的工作區。這有助於在 rebase 時避免大型衝突。
最佳實務
工作區維護
| 實務 | 原因 |
|---|---|
| 刪除已 rebase 的工作區 | 釋放磁碟空間 |
| 移除已放棄的實驗 | 讓工作區清單保持易於管理 |
| 將工作區數量維持在合理範圍 | 系統資源有限 |
Git 衛生
| 實務 | 原因 |
|---|---|
| 經常 commit | 切換前先 commit 進行中的工作 |
| 小型 commit | 較小的 commit 更容易 cherry-pick |
| 定期與 base 同步 | 不要讓工作區與主分支偏離太遠 |
| 降低衝突複雜度 | 定期整合可避免大型衝突 |
FAQs
每個工作區會使用多少磁碟空間?
每個工作區會複製工作檔案,但共用 .git 目錄。空間使用量大致等同於每個工作區一份你的專案大小。大型專案若有許多平行工作區,會使用大量磁碟空間。
我可以刪除工作區嗎?
可以。透過 Verdent 刪除工作區。這會移除目錄,但會保留該分支上任何已 commit 的工作。
我要如何建立新的工作區?
目前 Desktop 介面不提供手動建立功能。New Workspace 入口與快捷鍵已隱藏。Verdent 仍可在支援的隔離工作流程中於內部使用工作區。
如果我刪除工作區,未 commit 的變更會怎樣?
刪除工作區時,未 commit 的變更會遺失。移除工作區前,務必先 commit 或 stash 變更。
我可以將工作區轉換成 base workspace 嗎?
沒有直接轉換方式,但你可以將工作區中的所有變更 rebase 到主分支,然後刪除該工作區。分支歷史會被保留。
worktrees 是否適用於所有 git hosting services?
是。Git worktrees 是標準 git 功能。它們適用於 GitHub、GitLab、Bitbucket,以及任何其他 git hosting service。