编辑git子模块

Chr*_*ott 28 git git-submodules

这可能吗?想象一下,我有父母和孩子的项目.两者都是git存储库.Child是Parent的子模块.

我是否可以对Parent内部的Child版本进行编辑并提交和推送它们就像常规存储库一样?

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

谢谢.

Már*_*son 35

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

Git很棒.:-)

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

重要的提示:

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

然后还要确保当你提交子模块的更新状态时,你要么push那些提交到公共回购,要么至少你没有改变或以其他方式改变子模块内的历史 - 就像那样破坏父母对子模块历史的引用.

小心谨慎.(帽子提示@pjmorse提醒.)

底线:

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


pjm*_*rse 7

根据文件:

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

就像我所知,如果你正在处理添加了子模块的分支,你可以编辑Child并推回到它的存储库.但是,如果您不是将Child添加到Parent的开发人员,那么您正在使用一个独立的头部,并且需要签出一个单独的Child版本来进行更改,或者进行更改并导出补丁(使用git format-patch)别人提交(通过git am).