我怎样才能安全地提交 .git 目录

How can I safely commit a .git directory

我正在开发一个 git 相关的软件,我在我的代码中包含了单元测试。

我创建了一个测试 git 项目(在子目录下)供测试使用:resources/test-git-project
此测试 git 项目未与任何远程关联,但它包含 commits/tags/branches.

在 git 中提交 resources/test-git-project 内容的最安全方法是什么?

您不应该嵌套 git 个存储库。

有一个用于代码和测试的唯一存储库(有点常见),或者有两个单独的存储库,但在您的文件系统中处于相同的层次级别,而不是嵌套到另一个。

您可以将其压缩或添加为 git submodule,具体取决于您希望更改内容的频率以及 .git 文件夹的哪些部分对您的测试很重要。

将其添加为子模块将使访问 .git 目录变得更加容易,但不会真正 提交 目录的内容并管理其修订。你甚至会在不同的克隆上有不同的内容,因为当你执行 git pull 时(如果你 add/remove 分支,如果你 rebase 分支,如果你在本地创建悬挂对象,等等......)

你也可以用 the --git-dir option 做点什么。

感谢 Thibault D. 的回答,我找到了我正在寻找的解决方案:

我已将重命名 .gitgitdir 现在可以提交了:

当我想执行更新或查看测试仓库的状态时,我会执行以下操作:

git --git-dir=resources/test-git-project/gitdir --work-tree=resources/test-git-project anycommand

在执行单元测试之前,我将目录 resources/test-git-project 复制到 /tmp 下并将 /tmp/test-git-project/gitdir 重命名为 /tmp/test-git-project/.git,这样我就不必弄乱 --git-dir 选项在我的测试代码上。