Git Worktrees

Git 進階

Amanda Crawford-Adamo

Software and Data Engineer

什麼是 Git Worktree?

Git Worktree 指令

git worktree
  • 可在工作區「checkout」多個分支。
  • 類似 repo 的 checkout,但更有效率
  • 不需暫存變更
  • 開發時不必在分支間切換

由圓點與線構成的假樹圖

Git 進階

Git Worktree 與 Git Switch 比較

此表比較在開發流程中使用 git worktree 與 git switch。 $$

Git Worktree Git Switch
多個分支同時啟用 一次僅一個啟用分支
各自獨立的目錄 單一工作目錄
不需 stash 變更 可能需要 stash
Git 進階

建立 Git Worktree

從 <branch> 建立新的 work tree 至目錄 <path>

git worktree add <path> <branch>

範例

bugfix/data-validation 分支建立新的 work tree 至 ../etl-bugfix 目錄

git worktree add ../etl-bugfix bugfix/data-validation
Git 進階

列出與移除 Worktrees

  • 列出所有啟用的 worktree: git worktree list

範例輸出

$ git worktree list
flight-pipeline            a1b2c3d [main]
flight-pipeline-feature    e4f5g6h [feature]
flight-pipeline-hotfix     i7j8k9l [hotfix]
  • 從 <path> 移除一個 worktree:git worktree remove <path>

範例輸出

$ git worktree remove flight-pipeline-hotfix
flight-pipeline-hotfix: deleted
Git 進階

何時使用 Git Worktrees

適用情境:

  • 同時開發多個功能
  • 處理緊急修復且不干擾進行中的工作
  • 並行在不同分支上執行測試
  • 進行 Code Review 同步持續開發

需再評估:

  • 磁碟空間有限
  • 專案更新頻繁且合併複雜
Git 進階

Git Worktrees 的最佳做法

使用 Git worktrees 的注意事項:

  1. 為 worktree 目錄採用清楚的命名規則
  2. 定期清除未使用的 worktree,保持工作區整潔
  3. 注意磁碟空間,特別是大型專案
  4. 將 worktree 用於短期並行工作,避免混淆
Git 進階

一起來練習吧!

Git 進階

Preparing Video For Download...