Verdent Docs
進階功能

工作區隔離

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。