【发布时间】:2018-10-10 14:22:37
【问题描述】:
我在我正在使用的脚本中看到了这一行:
git config core.worktree ..
我不确定 git worktree 是做什么的,但我绝对不明白为什么要将它设置为 ..
有什么线索吗? 谢谢
【问题讨论】:
标签: git config git-worktree
我在我正在使用的脚本中看到了这一行:
git config core.worktree ..
我不确定 git worktree 是做什么的,但我绝对不明白为什么要将它设置为 ..
有什么线索吗? 谢谢
【问题讨论】:
标签: git config git-worktree
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。任何使用此配置选项的存储库都应仅通过终端命令处理。
【讨论】:
.. 表示父目录。
我不确定您是在询问 .. 语法,还是脚本使用父目录的原因。
对于git config core.worktree,请参阅https://git-scm.com/docs/git-worktree
您可能希望发布脚本,以便人们了解为什么使用父目录。
【讨论】:
这可能是一种图书馆共享策略。
您正在配置的 repo 的内容很可能由多个其他 repo 通过子模块共享 - 但是编写该脚本的人希望将所有这些内容引用到本地的同一个工作副本(而不是每个 repo 都有自己的本地副本)。
各有利弊...
见:Git: Possible to use same submodule working copy by multiple projects?
【讨论】: