什么是使用Git子模块的正确方法

时间:2012-01-24 21:55:44

标签: git git-submodules flow

我有git项目,它们共享一个公共库作为git子模块。 当我对项目进行任何更改时,我总是创建一个git分支来完成我的工作。在测试并给出另一组眼睛之后,我将分支合并回master,它随时可以部署。

有时我也需要对子模块库进行更改。最好的做法是首先分支主项目,然后进入子模块并分支它吗?我意识到我需要在其他使用的项目中测试修改后的子模块分支。有没有不同的方法来做这件事?

2 个答案:

答案 0 :(得分:1)

分支或不分支子模块,这就是问题,但这完全取决于你。 如果您的子模块是库,而其他项目正在使用它,则必须保持向后兼容。您可以修复其中的内容,但不要触及其API。但是lib修复实际上属于lib的主分支。因此,当您分支主项目时,我没有看到自动分支子模块的原因。

从技术上讲,重要的是:如果您修改并提交子模块和主项目,请先推送子模块,然后再推送主项目。 没有递归推送这样的东西。

答案 1 :(得分:0)

git子模块本身就是一个项目。因此,分支子模块的策略由与所有分支决策相同的考虑因素定义。是否会同时开发子模块?您是否想在不污染主人历史的情况下回放变更?是的,测试也可能是一个考虑因素,但它应该是子模块的目标,它可以在其他项目中正确使用。

我有几个使用共享子模块的项目,它在处理多分支主项目时进行了扩展。我很少看到需要分支子模块。但有时候当然有。