別再被 Git Stash 綁架了!使用 Git Worktree 同時並行多個開發任務

Josh-avatar-img
發佈於學習
更新 發佈閱讀 5 分鐘
vocus|新世代的創作平台

前言:你是否也遇過這種窘境?

想像一下:你正在 feature-A 分支上寫得正順,突然老闆衝過來,說線上環境有個緊急 Bug 需要在 main 分支修復。

傳統上,你可能只能先 git stash 把寫到一半的內容存起來,切換分支後修完再切回來。如果改動範圍很大,這過程不僅繁瑣,還容易搞混。

這時候,Git Worktree 就是你的救星!

什麼是 Git Worktree?

簡單來說,git worktree 允許你在同一個專案(同一個 .git 資料夾)下,同時擁有多個工作目錄(Working Tree)

每個工作目錄都可以指向不同的分支。你可以在資料夾 A 開發新功能,同時在資料夾 B 修復緊急 Bug,兩邊互不干擾,卻共享同一個本地倉庫的歷史紀錄與物件。

核心優勢

  • 無需 Stash:不必打斷手邊的工作。
  • 節省空間:不需要像 git clone 那樣重複下載整個歷史紀錄。
  • 高效並行:可以在一個目錄跑大型測試或編譯,在另一個目錄繼續寫程式。

常用指令詳解

1. 建立新的工作樹

這是最常用的指令。它會建立一個新資料夾,並自動切換到指定的分支。

指令: git worktree add <路徑> <分支名稱>

  • 範例: git worktree add ../hotfix-dir emergency-fix
  • 這會在上一層目錄建立 hotfix-dir 資料夾,並切換到 emergency-fix 分支。

2. 查看目前所有的工作樹

如果你忘了自己開了多少個工作樹:

指令: git worktree list

3. 移除工作樹

當任務完成後,清理掉不再需要的工作樹:

指令: git worktree remove <路徑>


實戰應用情境

  • 程式碼審查 (Code Review):在不影響自己開發進度的情況下,開一個新目錄檢查同事的 Branch。
  • 版本環境對比:同時開啟 v1.0v2.0 的代碼,直接用編輯器進行物理上的比對,不用切來切去。
  • 長耗時任務:一邊在 A 目錄跑長達 10 分鐘的整合測試,一邊在 B 目錄繼續修下一個 Bug。

常見錯誤排除:為什麼我的指令失敗了?

在初次使用時,很多人會遇到 usage: git worktree add ... 的錯誤訊息,通常是因為以下兩個原因:

  1. 路徑衝突:不能使用 .(當前目錄)。因為目前目錄已經是主工作樹了,Git 不允許在同一個位置重疊建立另一個工作樹。
  2. 參數過多:指令語法必須嚴格遵守 <路徑> <分支>。如果多輸入了不必要的參數或打錯字,Git 就會報錯。

進階:如何優雅地管理 Worktree?

如果你習慣將所有的 Worktree 集中管理在專案內的 .worktrees/ 資料夾下,這是一個非常整潔的做法,但請務必做好以下設定:

1. 正確的指令範例

假設要針對 emergency-fix 分支開一個工作樹:

  • 若分支已存在: git worktree add .worktrees/emergency-fix emergency-fix
  • 若要同時建立新分支: git worktree add .worktrees/emergency-fix -b emergency-fix

2. 關鍵的 .gitignore 設定

因為 .worktrees/ 位在專案資料夾內,為了避免主專案的 Git 狀態變得混亂,請務必在你的 .gitignore 檔案中加入:

.worktrees/

這樣主專案就會忽略這些暫時性的工作目錄,保持開發環境乾淨。

3. VS Code 使用小撇步

在子工作樹資料夾中,Git 會自動產生一個 .git 檔案連結回主目錄。你可以同時將主專案與子工作樹加入 VS Code 的 Workspace (工作區),這樣就能在同一個側邊欄看到不同分支的代碼,進行極速開發與比對!


結語: Git Worktree 是一個被低估的神級工具。一旦習慣了「物理隔離」的開發模式,你就再也回不去頻繁 stash 的日子了。希望這篇文章能幫你優化開發流程!

留言
avatar-img
Josh的沙龍
58會員
125內容數
分享知識
Josh的沙龍的其他內容
2026/04/10
標籤命名有空格或需要更改已上傳的 Tag?本文整理 Git 標籤管理實戰技巧,包含回溯補打、刪除遠端標籤、正確命名規則及附註標籤用法。透過簡單指令,讓你專業管理版本發布,避免團隊溝通混亂。
Thumbnail
2026/04/10
標籤命名有空格或需要更改已上傳的 Tag?本文整理 Git 標籤管理實戰技巧,包含回溯補打、刪除遠端標籤、正確命名規則及附註標籤用法。透過簡單指令,讓你專業管理版本發布,避免團隊溝通混亂。
Thumbnail
2026/04/10
版本發布後才發現忘記打標籤?別擔心!本文教你如何在 Git 歷史紀錄中定位特定的 Commit ID,並快速補上輕量或附註標籤,最後同步至遠端伺服器。簡單三步驟,讓你的版本管理更加清晰專業。
Thumbnail
2026/04/10
版本發布後才發現忘記打標籤?別擔心!本文教你如何在 Git 歷史紀錄中定位特定的 Commit ID,並快速補上輕量或附註標籤,最後同步至遠端伺服器。簡單三步驟,讓你的版本管理更加清晰專業。
Thumbnail
2026/03/11
想要提升寫作效率?本文教你如何透過 PicGo 串接 GitHub 倉庫,實現「截圖即上傳」的自動化流程。從申請 GitHub Token 到配置 jsDelivr CDN 加速,只要三分鐘設定,就能讓你的 Markdown 圖片引用變得優雅且迅速,徹底告別手動上傳的煩惱。
Thumbnail
2026/03/11
想要提升寫作效率?本文教你如何透過 PicGo 串接 GitHub 倉庫,實現「截圖即上傳」的自動化流程。從申請 GitHub Token 到配置 jsDelivr CDN 加速,只要三分鐘設定,就能讓你的 Markdown 圖片引用變得優雅且迅速,徹底告別手動上傳的煩惱。
Thumbnail
看更多
你可能也想看
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這篇文章將會介紹分支的合併,以及它常見的分類。
Thumbnail
這篇文章將會介紹分支的合併,以及它常見的分類。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
Thumbnail
有關 git add, git commit, git push
Thumbnail
有關 git add, git commit, git push
Thumbnail
這篇文章將會講解 Git 專案上傳 GitHub 的流程。
Thumbnail
這篇文章將會講解 Git 專案上傳 GitHub 的流程。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News