这可能吗?想象一下,我有项目父母&孩子。两者都是git respositories。子是Parent的子模块。编辑git子模块
我可以编辑内部的子版本&提交&将它们像普通存储库一样推送?
或者我需要一个单独的克隆的孩子的地方,我作出改变?
谢谢。
这可能吗?想象一下,我有项目父母&孩子。两者都是git respositories。子是Parent的子模块。编辑git子模块
我可以编辑内部的子版本&提交&将它们像普通存储库一样推送?
或者我需要一个单独的克隆的孩子的地方,我作出改变?
谢谢。
你不需要一个单独的克隆。子模块文件夹是它自己的世界。只要编辑,提交,分支,并推动你的心脏的喜悦。
Git非常棒。 :-)
顺便说一下,父存储库甚至会检测子模块文件夹内发生的更改,并提供您提交子模块的当前状态作为父回购的克隆的新官方参考点。
重要提示:
确保您在开始之前,黑客做的子模块文件夹内git checkout master
(或其他一些分支)。
然后还要确保何时提交子模块的更新状态,您是否要push
那些提交到公共回购站,或者至少您没有改变或以其他方式更改子模块内的历史记录之后 - 因为这会破坏父母对子模块历史记录的引用。
小心踩踏。 (帽尖@pjmorse的提醒。)
底线:
是。在子模块文件夹内开发可能并且通常很方便但不是没有风险。选择你的发展模式明智地
+1首先进行结账。此外,在切换分支机构或在Parent中执行其他工作之前,您要确保您有一个干净的Child repo(提交任何更改)。 – 2011-03-25 01:29:41
在父代执行简单的日常(编辑,提交,拉取,推送)工作时,在父代回购中工作时,我还没遇到子模块中未完成更改的问题。不过,切换分支和子模块更新操作可能会有风险。好点子! – 2011-03-25 01:39:21
在克隆中开发并不是一个坏主意,只是为了减少意外使用分离的HEAD犯下的可能性。你当然也可以使用钩子来检查你自己。 – Cascabel 2011-03-25 02:59:33
如果你想使一个子模块内的变化,应先检查出一个分支,进行更改,子模块内发布的变化,然后更新超级项目以引用新的提交。
就我所知,如果你在添加子模块的分支上工作,你可以编辑Child并推回到它的存储库。但是,如果您不是将Child添加到Parent的开发人员,则您正在使用分离的头部,并需要检出单独版本的Child以进行更改,或者进行更改并导出修补程序(使用git format-patch
)为其他人提交(通过git am
)。
“主人”很可能是您检查的分支。但是你说得很好! – 2011-03-25 01:14:37
另请参阅http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC 2011-03-25 05:10:40