用 git worktree 新增資料夾 (X) 獨立工作區 (O)

2025-01-16 19:12 git

除了 git stashgit checkout -b <new-branch> 之外,也可考慮使用 git worktree 來處理與專案基礎建設有關的改動,避免做到一半需要切換環境時一陣手忙腳亂。

語法

新增:

git worktree add -b <branch> <path>

移除:

git worktree remove <worktree>

移除名為 <worktree> 的 worktree,注意硬碟中的資料夾也會跟著一起被刪掉

範例

git worktree add -b feature/replace-webpack-by-vite ../use-vite

執行以上範例代表著:

指令執行前後的硬碟樹狀圖如下:

# before script
.
└── ./repo

# after script
.
├── ./repo
└── ./use-vite

之後不管我在 use-vite 這個資料夾如何瞎搞,都完全不會影響 repo 的內容。相較之下,如果透過「建立一個新分支」來將專案從 webpack 換成 vite,我就必須在每次切換分支後重新安裝套件(因為這兩組分支依賴的套件互相衝突)。而使用 git worktree 建立新環境就不需要煩惱這件事 😇

參考文件