我怎样才能安全地提交 .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. 的回答,我找到了我正在寻找的解决方案:
我已将重命名 .git
为 gitdir
现在可以提交了:
当我想执行更新或查看测试仓库的状态时,我会执行以下操作:
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
选项在我的测试代码上。
我正在开发一个 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. 的回答,我找到了我正在寻找的解决方案:
我已将重命名 .git
为 gitdir
现在可以提交了:
当我想执行更新或查看测试仓库的状态时,我会执行以下操作:
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
选项在我的测试代码上。