Git更新子模块recursion

我的项目结构

ProjectA -FrameworkA (submodule) --Twig (submodule of FrameworkA) 

我怎样才能更新子模块recursion? 我已经尝试了一些git命令(在ProjectA根上)

 git submodule foreach git pull origin master or git submodule foreach --recursive git pull origin master 

但不能拉树枝的文件

 git submodule update --recursive 

您也可能想要使用–init选项来使其初始化任何未初始化的子模块:

 git submodule update --init --recursive 

注意: 在一些旧版本的Git中 ,如果使用--init选项,已经初始化的子模块可能不会被更新。 在这种情况下,你也应该运行没有--init选项的命令。

我使用的方式是:

 git submodule update --init --recursive git submodule foreach --recursive git fetch git submodule foreach git merge origin master 

由于可能发生子模块的默认分支不是 master (这在我的情况下发生了很多),所以这是我如何自动化完整的Git子模块升级:

 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'