我嵌套了 git 存储库,会导致问题吗?

我嵌套了 git 存储库,会导致问题吗?

历史

  1. 我安装了etckeeper
  2. 我决定将 shorewall 防火墙配置作为其自己的 git 存储库进行跟踪。我想我希望更容易查看特定的配置更改。我决定不再需要 etckeeper 并将其卸载。所以没有冲突,除了...
  3. 在重新考虑 etckeeper 时,我注意到我实际上并没有删除/etc/.git.

在我意识到之前,我本以为这git init会拒绝创建嵌套的 git 存储库。

如果我只是继续使用 etckeeper,我会担心外部 git 可能会在跟踪内部 .git 目录时变得臃肿。或者,它可能会忽略全部目录中的文件是单独的 git 存储库。

所以我很好奇,可能会出什么问题?

答案1

我对嵌套 git 存储库的第一次测试没有遇到这三个问题。您不必.git添加gitignore;所有目录的内容.git都会被自动忽略。

其他文件(例如与 位于同一目录中.git)可以提交到外部存储库中。

所以我认为 etckeeper 可以持续跟踪所有文件,而子目录可以在特定存储库中更仔细地记录其历史记录。这两段历史对彼此一无所知。

我后来才注意到一个问题。当我提交一个 git 存储库目录时包含提交本身,我尚未从外部存储库中的该目录提交文件,然后它显示为Subproject.内容仅由提交 ID 表示。 gitk似乎将其显示为 a Submodule

这听起来 git 真的很想将它们识别为git-submodule.我不是特别明白git-submodule,我只是知道它有点令人困惑。

我还注意到该.etckeeper文件会随着目录中的文件而膨胀.git,即使 git 使用子模块也是如此。

相关内容