移動工作樹
目前(從版本 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 命令,否則可能會觸發垃圾收集器並且可能會丟失對輔助樹的引用。從開始到結束執行這些步驟而不中斷:
-
更改 worktree 的
.git
檔案以指向主樹內的新位置。檔案/home/user/project-1/.git
現在應該包含以下內容:gitdir: /home/user/project-main/.git/worktrees/project-2
-
通過移動存在於其中的 worktree 目錄,重新命名主專案的
.git
目錄中的工作樹:$ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
-
將
/home/user/project-main/.git/worktrees/project-2/gitdir
內的參考更改為指向新位置。在此示例中,該檔案將具有以下內容:/home/user/project-2/.git
-
最後,將你的工作樹移動到新位置:
$ 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
也應該是安全的。