我的项目结构
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
如何递归更新子模块?我已经尝试了一些git命令(在ProjectA root上)
git submodule foreach git pull origin master
或
git submodule foreach --recursive git pull origin master
但无法拉取Twig的文件。
答案 0 :(得分:500)
git submodule update --recursive
您可能还想使用--init选项来初始化任何未初始化的子模块:
git submodule update --init --recursive
注意:在某些旧版本的Git 中,如果使用--init
选项,则可能无法更新已初始化的子模块。在这种情况下,您还应该运行不带--init
选项的命令。
答案 1 :(得分:24)
我使用的方式是:
git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge origin master
答案 2 :(得分:15)
由于可能会发生子模块的默认分支不 master
(在我的情况下会发生很多),这就是我自动执行完整Git子模块升级的方法:< / p>
git submodule init
git submodule update
git submodule foreach 'git fetch origin; git checkout $(git rev-parse --abbrev-ref HEAD); git reset --hard origin/$(git rev-parse --abbrev-ref HEAD); git submodule update --recursive; git clean -dfx'
答案 3 :(得分:10)
在最近的Git(我使用v2.15.1)中,以下内容将上游子模块更改合并到子模块中:
git submodule update --recursive --remote --merge
您可以添加--init
来初始化任何未初始化的子模块,如果要进行rebase而不是合并,可以使用--rebase
。
您需要在之后提交更改:
git add . && git commit -m 'Update submodules to latest revisions'