我正在尝试将git submodules
用于以下拓扑:
parent_repo
`-- child_repo
我们正在维护一个我们都推动和拉动的主干副本。 (我知道星型拓扑不是必需的。我意识到你可以互相拉扯而不通过中央存储库反射。)
trunk_child_repo <--+
|
trunk_parent_repo |
`-- child_repo -----+ # child_repo will pull from trunk_child_repo by default
现在我们有多个trunk_parent_repo
副本,其中包含完全填充的子模块。
trunk_parent_repo
`-- child_repo
ross_parent_repo
`-- child_repo
bob_parent_repo
`-- child_repo
joe_parent_repo
`-- child_repo
我在ross_parent_repo
,我想从bob_parent_repo
取消并获取bob对bob_parent_repo
中的文件所做的所有修改以及编辑他致力于他的子模块 bob_parent_repo/child_repo
。
不幸的是,当我执行git pull --recurse-submodules bob_parent_repo
时,它会从bob_parent_repo
转到ross_parent_repo
,但从trunk_child_repo
转到ross_parent_repo/child_repo
。
是否有可能有一个很好的,简单的命令来提取Bob在bob_parent_repo
中完成的所有变更集以及他在所有子模块中完成的所有变更集?我是否需要编写脚本并遍历.gitmodules
文件中的子模块?
答案 0 :(得分:2)
无需打开.gitmodules
;你可以使用git submodule foreach
。
git pull $BOBS_PARENT_REPO
git submodule foreach 'git pull $BOBS_PARENT_REPO/$path/.git'
(但这对于子模块的任何子模块都不起作用。)