1

git中的“主工作树”和“链接工作树”有什么区别吗?如果有,有什么区别?


Git 有一个名为git-worktree的子命令,用于在一个存储库中管理多个工作树。使用此命令克隆时:

git clone <url> --separate-git-dir=.git main

该目录main将包含“主工作树”。之后,可以使用创建一个新的工作树git worktree add temptemp现在是“链接工作树”。

有什么方法可以区分这两种类型吗?一件事应该是main不能以与temp( git worktree remove temp) 相同的方式删除。但是还有其他可能/不可能与一种工作树而不是另一种有关的事情吗?

4

1 回答 1

0

可能与不可能:一般来说,答案应该是否定的。对主工作树的唯一限制是您不能删除它。

实际:是的,偶尔会显示其他位。例如,当充当 a 的接收者时git push,至少在旧版本的 Git 中,只考虑主工作树的分支。(可能仍然是这种情况;我还没有测试过。)

Git 必须在内部区分“主”和“添加”工作树,因为传统文件的传统位置直接位于.git:例如,.git/HEAD包含主工作树的当前分支并.git/index包含主工作树的默认索引。其他添加的工作树在HEAD其他地方有它们的和索引文件。这就是 Git “泄露”出来的差异的根源。它们不打算泄漏,但有时会泄漏。

于 2021-10-15T10:13:44.880 回答