Optimize workflow with working tree
使用情境¶
若專案下有多個分枝,有時候就會碰到在寫 A 功能時,突然需要切到其他分枝修 bug。 最常見的做法是:
stash目前的異動,再切換到其他分枝修改commit一個 WIP (work in progress),待修改完reset回去clone多個資料夾,在不同資料夾下作業
不過,這些作法可能會造成硬碟空間的浪費,而且可能會浪費許多時間。 以下紀錄一個較佳的解決方案:
列出當前管理的工作目錄¶
git worktree list
建立新的工作目錄¶
git worktree add <path> <branch>
移動工作目錄的路徑¶
git worktree move <path-A> <path-B>
鎖定/解鎖建立的工作目錄¶
工作目錄被鎖定的情況下,可以避免這個工作目錄被移動或刪除:
# 鎖定建立的工作目錄
git worktree lock [--reason <string>] <worktree>
# 解鎖建立的工作目錄
git worktree unlock <worktree>
刪除建立的的工作目錄¶
git worktree remove <path/worktree>
rm -rf ./<folder>/
# 清除 Git 無法管理的工作目錄
git worktree prune