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

Cha*_*ang 5 git

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

  1. 如果子模块内容已提交更改,则子模块文件夹需要提交.
  2. 分支设置不会传播到子模块中.如果分支中的工作跨子模块,我们必须在子模块中手动切换分支.

这两个问题很容易在日常开发工作中引入错误.我发现git奴隶可以解决我的问题.

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

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

Von*_*onC 4

需要注意的要点在“Gitslave 并不完美”部分中已有描述:

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

这在再现性方面很糟糕(VCS 的一个主要目标:能够再现环境历史上任何时刻的状态)。
您需要添加标签(具有一定的命名约定),以便获得父存储库与其子存储库之间所需的一些紧密对应关系(这自然存在于子模块中,正如我在真实本质中所解释的那样)子模块)。