5

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

git config core.worktree ..

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

有什么线索吗?谢谢

4

3 回答 3

4

..表示父目录。

我不确定您是在询问..语法,还是脚本使用父目录的原因。

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

您可能想要发布脚本,以便人们可以理解为什么使用父目录。

于 2019-10-28T17:52:30.303 回答
3

Git 有两种策略来分隔存储库文件夹所在的位置 ( GIT_DIR) 和该存储库跟踪的文件位置 ( GIT_WORK_TREE,也就是主工作/工作树)。

core.worktree更改主工作树的位置。在您的情况下,默认等效项...包含存储库文件夹的父目录。使用外部的相对路径是你独自在房间里而不是在公共场合做的事情。core.worktreeGIT_DIR

他们为什么要这样做?跟踪多个存储库中的相同文件;原始开发人员可能在该父文件夹的子文件夹中有几个存储库,所有这些存储库都..用于他们的core.worktree配置。正如前面的答案所提到的,这可能是一种共享库的方式,但是有更好的策略来做到这一点。

由于我提出了它,您可以使用任何 git 存储库并将.git存储库文件夹替换为.git包含gitdir: <some path>指向将充当存储库文件夹的新位置的文件。重要的是要注意<some path>包含存储库文件夹名称,因此这是一种更改存储库文件夹名称的方法,因此它不是.git. 执行此操作时,您在.git文件的位置执行 git 命令,因为它现在伪装成存储库文件夹。

重要的提示:

绝大多数 git GUI 不正确支持core.worktree. 任何使用此配置选项的存储库都应仅通过终端命令处理。

于 2021-05-12T10:13:25.063 回答
2

这可能是图书馆共享策略的一种形式。

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

有优点也有缺点......
请参阅:Git:多个项目可以使用相同的子模块工作副本?

于 2019-11-12T16:52:57.643 回答