“git config core.worktree” 是什么意思?

9
我曾在我使用的脚本中看到这一行: ```html

我在使用的脚本中看到了这一行:

```
git config core.worktree ..

我不确定 git worktree 是什么,但我绝对不明白为什么要将其设置为 ..

有什么线索吗? 谢谢


1
可能是 我应该使用git-worktree做什么? 的重复问题。 - Gufran Hasan
https://stackoverflow.com/search?q=%5Bgit%5D+%22core.worktree%22 - phd
https://git-scm.com/docs/git-config#git-config-coreworktree - phd
3个回答

7
Git有两种策略来分离你的仓库文件夹所在的位置(`GIT_DIR`)和被该仓库跟踪的文件所在的位置(`GIT_WORK_TREE`,也称为主工作/工作树)。
`core.worktree`更改了主工作树的位置。在您的情况下,从默认的等效位置`.`到`..`,这是包含仓库文件夹的父目录。在`core.worktree`中使用相对路径并超出`GIT_DIR`的范围,这是您自己独自在房间里做的事情,而不是公开的。 为什么要这样做?为了在多个仓库中跟踪同一组文件;原始开发人员可能在该父文件夹的子文件夹中有几个仓库,所有这些仓库都使用`..`进行它们的`core.worktree`配置。正如前面的回答提到的那样,这可能是共享库的一种方式,但有更好的策略可以实现此目的。
既然我提到了它,你可以找到任何git仓库,将`.git`仓库文件夹替换为一个包含`gitdir:<some path>`的`.git`文件,以指向充当仓库文件夹的新位置。重要的是要注意`<some path>`包含仓库文件夹的名称,因此这是一种更改仓库文件夹名称的方法,使其不是`.git`。在执行此操作时,您将在现在伪装为仓库文件夹的`.git`文件的位置执行git命令。
重要提示:绝大多数Git GUI都不正确支持`core.worktree`。使用此配置选项的任何存储库都应仅通过终端命令处理。

4

..意为父目录。

我不确定你是在问..语法,还是为什么脚本使用了父目录。

关于git config core.worktree,请参阅https://git-scm.com/docs/git-worktree

如果您想让人们理解为什么使用了父目录,请发布该脚本。


2

这可能是一种库共享策略。

您正在配置的repo的内容很可能通过子模块被多个其他repo共享,但编写该脚本的人想要引用所有这些repo到同一个本地工作副本(而不是每个repo都有自己的本地副本)。

这种方法有利有弊...
参见:Git: Possible to use same submodule working copy by multiple projects?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接