移動工作樹

目前(從版本 2.11.0 開始),沒有內建函式來移動現有的工作樹。這被列為官方錯誤(請參閱 https://git-scm.com/docs/git-worktree#_bugs)

為了解決這個限制,可以直接在 .git 參考檔案中執行手動操作。

在這個例子中,回購的主要副本住在/home/user/project-main 和次級 worktree 位於/home/user/project-1,我們希望將它移動到/home/user/project-2

不要在這些步驟之間執行任何 git 命令,否則可能會觸發垃圾收集器並且可能會丟失對輔助樹的引用。從開始到結束執行這些步驟而不中斷:

  1. 更改 worktree 的 .git 檔案以指向主樹內的新位置。檔案/home/user/project-1/.git 現在應該包含以下內容:

    gitdir: /home/user/project-main/.git/worktrees/project-2
    
  2. 通過移動存在於其中的 worktree 目錄,重新命名主專案的 .git 目錄中的工作樹:

    $ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
    
  3. /home/user/project-main/.git/worktrees/project-2/gitdir 內的參考更改為指向新位置。在此示例中,該檔案將具有以下內容:

    /home/user/project-2/.git
    
  4. 最後,將你的工作樹移動到新位置:

    $ mv /home/user/project-1 /home/user/project-2
    

如果你已正確完成所有操作,列出現有工作樹應參考新位置:

$ git worktree list
/home/user/project-main  23f78ad [master]
/home/user/project-2     78ac3f3 [branch-name]

現在執行 git worktree prune 也應該是安全的。