Worktree
worktree 會把同一個存放庫的另一個分支檢出到獨立的資料夾。每個代理使用一個 worktree,多個代理就能同時處理同一個專案,而不會編輯到彼此的檔案。PATerminal 只要一個步驟,就能建立 worktree 並以新的工作階段開啟。
以 PATerminal v1.8.3 為準撰寫
建立 worktree
- 在位於存放庫中的窗格裡,按一下窗格列上的 Worktree(分支清單中也有)。
- 在 建立來源 下方,選擇 分支 或 拉取請求。
- 選擇 基底分支(或拉取請求),並輸入 新分支 名稱。
- 選擇 存放位置,也可以視需要填寫工作階段備註。
- 按 建立。新的工作階段會在 worktree 的資料夾中開啟。
worktree 的存放位置
- 存放庫外部(預設)
- worktree 會集中放在以存放庫命名的資料夾中,例如
~/worktrees/acme-app/feature-login。可以輸入絕對路徑、~或..。不會更動你的.gitignore。 - 存放庫內部
- worktree 會放在存放庫內的某個資料夾中。如果該資料夾尚未被忽略,會將它加入根目錄的
.gitignore(視為一般的原始碼變更)。
複製被忽略的檔案
剛建立的 worktree 裡沒有任何被 Git 忽略的檔案,所以通常還無法直接執行。選擇 忽略的檔案(gitignore):從目前檢出複製(預設)時,PATerminal 會把 .env、node_modules、.venv 等檔案從目前的檢出複製到新的 worktree,並顯示進度。選擇 不複製 即可略過。
從拉取請求建立 worktree
選擇 拉取請求 作為來源,即可列出開啟中的 PR(透過你的 gh)。PATerminal 會在該 PR 的分支上建立 worktree,並以工作階段開啟——非常適合在主要檢出繼續工作的同時審查或修正 PR。如果該分支已經有 worktree,會直接沿用。
管理 worktree
Git 視窗中的 worktree 清單會顯示每個 worktree 及其分支與狀態(目前、主要、已鎖定、遺失)。可以刪除單一 worktree,或選取多個後按 刪除所選。刪除 worktree 會保留它的分支;主要 worktree 與目前的 worktree 無法刪除。當 Git 因為本機變更而拒絕刪除時,會提供 強制刪除。
Worktree 預設值
「設定」→ Worktree 預設位置 可設定預設位置,以及是否複製被忽略的檔案。開啟 Automatically fill in the branch name 後,會自動產生由日期、時間與簡短隨機字尾組成的分支名稱。這些預設值也會套用在從 Issue 或由結對模式建立的 worktree。