Git:用链接的工作树交换主工作树?

bat*_*tch 5 git git-worktree

我试图找出是否有任何方法可以交换工作树。我的公司有很多假定特定目录结构的脚本,因此为了能够使用多个工作树,我需要“新”链接的工作树来代替主工作树。

我发现git worktree move <worktree> <new-path>但这不允许移动“主要”工作树,因此没有交换的机会。

理想情况下,会有一个git worktree swap <worktree> <path>地方:

  • 如果<path>是工作树,它会交换它们
  • 如果<path>是 commit-ish,它会添加一个名为<worktree>'s name的新工作树作为 commit-ish,然后交换它们

tor*_*rek 1

简短的答案是否定的:主工作树与所有添加的工作树不同。

请注意,您可以使用和/或环境变量和/或和/或选项将.git目录与任何工作树分开(只需设置环境变量,然后就像最初设置环境变量一样进行)。但一般来说,存储库的主要工作树是特殊的:例如,它的文件位于,而不是。$GIT_DIR$GIT_WORK_TREE--git-dir--git-work-treeHEAD.git/HEAD.git/worktrees/<name>/HEAD

(工作树W的每个工作树状态通常存储在 中。)$GIT_DIR/worktrees/W