编辑git子模块

时间:2011-03-25 00:57:26

标签: git git-submodules

这可能吗?想象一下,我有项目Parent&儿童。两者都是git存储库。 Child是Parent的子模块。

我是否可以对Parent&amp ;;中的Child版本进行编辑承诺与像普通的存储库一样推送它们吗?

或者我是否需要在某个地方单独克隆Child?我会对其进行更改?

感谢。

2 个答案:

答案 0 :(得分:34)

您不需要单独的克隆。子模块文件夹是它自己的世界。只需编辑,提交,分支并推动您心中的喜悦。

Git很棒。 : - )

顺便说一下,父存储库甚至会检测子模块文件夹内发生更改的时间,并提供您提交子模块的当前状态作为父存储库克隆的新官方参考点。

重要提示:

确保在开始黑客攻击之前在子模块文件夹中执行git checkout master(或其他某个分支)。

然后还要确保当你提交子模块的更新状态时,要么push那些提交到公共回购,要么至少你没有改变或改变其中的历史记录。之后的子模块 - 因为这会破坏父级对子模块历史的引用。

小心谨慎。 (给小费提醒@ pjmorse。)

<强>底线:

是。在子模块文件夹中进行开发可能并且通常很方便,但并非没有风险。明智地选择您的开发模型

答案 1 :(得分:6)

根据documentation

  

如果要在子模块中进行更改,首先应检出分支,进行更改,在子模块中发布更改,然后更新超级项目以引用新提交。

尽管我已经知道,如果您正在处理添加了子模块的分支,您可以编辑Child并将其推回到其存储库。但是,如果您不是将Child添加到Parent的开发人员,那么您正在使用一个独立的头部,并且需要检查单独版本的Child以进行更改,或者进行更改并导出修补程序(使用{{ 1}})让其他人提交(通过git format-patch)。