2026年2月12日 星期四

Git worktree feature

沒問題!我將這幾次討論的精華整合成一份完整的 Blog 文章。這份內容保留了幽默感,並強化了你補充的「空間節省」與「狀態同步」兩大關鍵痛點。


影分身之術!用 Git Worktree 拯救你亂成一團的開發進度

你是否遇過這種崩潰情境:正當你在 feature 分支寫 Code 寫得行雲流水、靈感爆棚時,老闆突然衝進來大喊:「客戶說線上版噴火了,快給我去修 master 的 Bug!」

這時候你只能心碎地執行 git stash,把剛寫到一半、像極了草稿的程式碼強行塞進垃圾袋(暫存區),然後祈禱修完 Bug 回來時還記得剛才在寫什麼。

別再折磨自己了!今天來介紹 Git 界的「影分身之術」—— Git Worktree


1. 什麼是 Git Worktree?

git worktree 是 Git 2.5 版本後新增的指令。它的核心定義是:「在同一個專案之中,能夠同時開啟多個不同的工作目錄(Working Tree)」

  • 傳統做法(單軌鐵路):你要切換分支,必須先把軌道上的火車(目前的進度)清空(Stash 或 Commit),下一班火車才能進來。

  • Worktree(多軌鐵路):直接在旁邊加蓋一條新軌道。原本的開發視窗不動,直接在另一個資料夾開新分支修 Bug。兩邊互不干擾,簡直是多工處理的救星!


2. 為何你該捨棄 git clonegit stash

很多工程師為了多開視窗,會選擇 git clone 第二份專案到另一個資料夾。雖然這也能達到效果,但比起 Worktree,這簡直是「傷財又勞力」。

■ 理由一:硬碟空間的極致節省

當你 git clone 一個專案時,背後的 .git 資料夾包含了專案從出生到現在的所有歷史紀錄。如果你的專案很大(例如幾 GB),Clone 兩次就是雙倍的硬碟佔用。

  • Git Clone x 2:硬碟空間 1+1=2。

  • Git Worktree:所有的分身都共用同一個 .git 儲存庫。分身資料夾裡只有當前分支的檔案,硬碟空間維持在 1+0.0001 的極簡狀態。

■ 理由二:拒絕「同步地獄」

如果你用 Clone 兩份的方式,你在 A 資料夾 git pull 更新了分支,B 資料夾的進度還是舊的,你得手動再 pull 一次。

  • Git Worktree:因為共用儲存庫,你在任何一個分身中做的 CommitPushPull,都會全域連動。你在 A 處拉取的最新進度,B 處立刻就能看到,完全不需要在兩個資料夾之間推來推去。


3. 5W1H 核心大拆解

維度內容
Who需要一邊開發、一邊修 Hotfix,或想同時對照兩個分支程式碼的開發者。
What建立一個獨立的工作資料夾,但背後共用同一個 .git 儲存庫。
Where魔法發生在你的本地端,讓專案實現「物理級」的分身。
When不想動到目前工作區的檔案,卻又必須立刻處理另一個分支時。
Whystash 更直覺(不用切換),比 clone 更省空間且同步更快。
How透過 git worktree add 指令快速召喚分身。