我有两个裸露的回购super
和a
,一个super
- clone_super
的克隆和一个a
的克隆 - clone_a
。我在a
中添加了repo clone_super
作为子模块。
如果我现在在clone_a
进行一些更改,请推送这些更改并在git pull origin master
中执行~/clone_super/a
,它会在modify status
中呈现~/clone_super/a
,在git status
中~/clone_super
之后显示。
如果我执行git submodule update
,~/clone_super/a
将恢复为之前的提交。那么,我是否打算每次更新它们时都需要提交和推送存储它们存在的子模块?
答案 0 :(得分:4)
简短的回答是肯定的,你必须在更新之后提交并推送一个子模块。
如果目录不是子模块,请考虑目录是如何工作的,每次更改文件时都必须提交并推送它。子模块完全相同,只是 super 不直接跟踪文件更改。相反,子模块中的存储库跟踪文件更改,超级存储库通过跟踪子模块中的提交来跟踪这些更改。
关于这一点的好处是它允许以不同的粒度进行跟踪。您可以在不更改超级存储库的情况下在子模块中进行数十次跟踪更改,然后对 super 进行单次提交,以反映子模块中的更改。成本是两次承诺的要求。
答案 1 :(得分:1)
是的,这是有意的,它可以让您保留历史版本的回购a
使用每个版本的回购super