有没有办法让git子模块不存储特定的SHA?

时间:2017-06-21 19:21:59

标签: git git-submodules

在我的项目中,我们使用git子模块来管理一些插件。我们的核心项目和子模块都是并行开发的。因此,对于我们来说,每次子模块向前移动时都必须更新核心项目中子模块的SHA(并且必须解决不同开发人员之间的SHA上的冲突等),这对我们来说效果不佳。 p>

我们想告诉它跟踪一个分支,让它成为那样。但似乎子模块分支跟踪使得更新子模块变得更容易,但是没有什么可以缓解我们将超级项目指向特定SHA而不是分支的问题。

有人对我们有任何建议吗?

2 个答案:

答案 0 :(得分:1)

一种可能的替代方法是使用git子树而不是子模块。

使用过一个我不确定我是否会推荐它作为长期解决方案,但是https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtreehttps://legacy-developer.atlassian.com/blog/2015/05/the-power-of-git-subtree会合理地介绍它是如何工作的,并且应该帮助您确定它是否是一个更好的工作流程,满足您的特定需求。

答案 1 :(得分:0)

正如其他人所说,git子模块不是为我们的项目所做的设计的。但是我找到了一种方法来实现我们想要的东西......如果它对任何人都有用,我会发布在这里:

  • 我们不会对子模块索引进行本地更改,以避免额外的工作流程步骤以及git GUI无法很好处理的那些索引上频繁合并冲突的麻烦。
  • 然后我们将子模块文件夹标记为“假设未更改”,这会隐藏我们的本地更改,以便我们可以在索引更改时有效地忽略

所以,这给了我们想要的东西......一个允许新用户递归克隆所有相关插件并通过git submodule <command>进行批量操作的子模块,但没有跳过我们没有的固定提交SHA想。

相关问题