使用git子模块进行不安的开发生活

时间:2011-06-30 04:39:41

标签: git

我试过git子模块。虽然它可以解决我在项目中共享存储库的问题,但是使用子模块有两个问题困扰我:

  1. 如果子模块内容已提交更改,则子模块文件夹需要提交。
  2. 分支设置不会传播到子模块中。如果分支中的工作跨子模块,我们必须在子模块中手动切换分支。
  3. 这两个问题很容易为日常开发工作带来错误。我发现 git slave 可以解决我的问题。

    使用git slave有任何副作用吗?

    或者是否有良好的做法可以避免git子模块中出现上述问题?

1 个答案:

答案 0 :(得分:4)

需要注意的要点在"Gitslave is not perfect" section

中已完全描述
  

不太明显,不同存储库中的提交之间存在非常松散的关系   您无法轻松准确地确定任何其他存储库在进行特定提交时所处的提交/ SHA (尽管您可以非常容易地进行近似和假设)。只有标签才能在不同的存储库之间提供精确的同步。

对于再现性而言这是不好的(VCS的一个主要目标:能够在其历史中的任何点重现环境状态)。
你需要添加标签(带有一定的命名约定),以便在父回购和子回购之间找回你需要的一些紧密的对应关系(这自然存在于子模块中,正如我在{{3中解释的那样) }})。