跳轉到

Optimize workflow with working tree

使用情境

若專案下有多個分枝,有時候就會碰到在寫 A 功能時,突然需要切到其他分枝修 bug。 最常見的做法是:

  1. stash 目前的異動,再切換到其他分枝修改
  2. commit 一個 WIP (work in progress),待修改完 reset 回去
  3. 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