这可能吗?想象一下,我有项目Parent&儿童。两者都是git存储库。 Child是Parent的子模块。
我是否可以对Parent&amp ;;中的Child版本进行编辑承诺与像普通的存储库一样推送它们吗?
或者我是否需要在某个地方单独克隆Child?我会对其进行更改?
感谢。
答案 0 :(得分:34)
您不需要单独的克隆。子模块文件夹是它自己的世界。只需编辑,提交,分支并推动您心中的喜悦。
Git很棒。 : - )
顺便说一下,父存储库甚至会检测子模块文件夹内发生更改的时间,并提供您提交子模块的当前状态作为父存储库克隆的新官方参考点。重要提示:
确保在开始黑客攻击之前在子模块文件夹中执行git checkout master
(或其他某个分支)。
然后还要确保当你提交子模块的更新状态时,要么push
那些提交到公共回购,要么至少你没有改变或改变其中的历史记录。之后的子模块 - 因为这会破坏父级对子模块历史的引用。
小心谨慎。 (给小费提醒@ pjmorse。)
<强>底线:强>
是。在子模块文件夹中进行开发可能并且通常很方便,但并非没有风险。明智地选择您的开发模型
答案 1 :(得分:6)
如果要在子模块中进行更改,首先应检出分支,进行更改,在子模块中发布更改,然后更新超级项目以引用新提交。
尽管我已经知道,如果您正在处理添加了子模块的分支,您可以编辑Child并将其推回到其存储库。但是,如果您不是将Child添加到Parent的开发人员,那么您正在使用一个独立的头部,并且需要检查单独版本的Child以进行更改,或者进行更改并导出修补程序(使用{{ 1}})让其他人提交(通过git format-patch
)。