我有以下项目结构:
root-project
|
|-- A
| |
| |-- C
|
|-- B
Run Code Online (Sandbox Code Playgroud)
A 和 B 是根项目的子模块。C 又是项目 A 的子模块。假设我对项目 A、B 和 C 进行了更改,并将这些更改提交给相应的索引。之后,我更新根项目中对 A 和 B 的引用并提交该更改。当我使用选项 --recurse-submodules=on-demand 推送根项目的更改时,git 推送项目 A、B 和根项目的所有提交,但默默地忽略项目 C 的提交。我期望它也推动了项目 C 的变化。
我知道我可以通过在根项目文件夹中使用以下两个命令来解决这个问题。
git submodule foreach --recursive 'git push origin master'
git push
Run Code Online (Sandbox Code Playgroud)
有人可以澄清我是否做错了什么,或者这是否是 git-push 中的错误。我已经在 git 邮件列表上问过这个问题,但没有收到任何回复:http : //thread.gmane.org/ gmane.comp.version-control.git/266184
我还编写了一个小的 shell 脚本来设置所描述的项目结构并执行递归推送操作:https : //gist.github.com/usommerl/6e8defcba94bd4ba1438
版本 2.3.3