"git config core.worktree" 是什么意思?

what does "git config core.worktree" mean?

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

git config core.worktree ..

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

有线索吗? 谢谢

..表示父目录。

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

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

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

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

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

有利也有弊...
参见:Git: Possible to use same submodule working copy by multiple projects?

Git 有两种方法来区分您的存储库文件夹所在的位置 (GIT_DIR) 和该存储库跟踪的文件所在的位置 (GIT_WORK_TREE,也就是主要 work/working树)。

core.worktree 更改主工作树的位置。在您的情况下,从 . 的默认等效项到 .. 这是包含存储库文件夹的父目录。 core.worktree 中使用 GIT_DIR 之外的相对路径是你在自己的房间里而不是在 public 中做的事情。

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

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

重要提示:

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