在Git中,如何从存储库中提取并获取在该存储库的子模块子存储库中提交的所有子模块更改集?

时间:2011-07-25 18:36:48

标签: git

我正在尝试将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文件中的子模块?

1 个答案:

答案 0 :(得分:2)

无需打开.gitmodules;你可以使用git submodule foreach

git pull $BOBS_PARENT_REPO
git submodule foreach 'git pull $BOBS_PARENT_REPO/$path/.git'

(但这对于子模块的任何子模块都不起作用。)