com*_*lez 260 git git-submodules
我的项目结构
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
Run Code Online (Sandbox Code Playgroud)
我如何递归更新子模块?我已经尝试了一些git命令(在ProjectA上)
git submodule foreach git pull origin master
Run Code Online (Sandbox Code Playgroud)
要么
git submodule foreach --recursive git pull origin master
Run Code Online (Sandbox Code Playgroud)
但是不能拉扯Twig的文件.
dre*_*wag 555
git submodule update --recursive
Run Code Online (Sandbox Code Playgroud)
您可能还希望使用--init选项来初始化任何未初始化的子模块:
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
注意:在某些旧版本的Git中,如果使用该--init
选项,则可能无法更新已初始化的子模块.在这种情况下,您还应该运行不带--init
选项的命令.
Wil*_*ken 31
我使用的方式是:
git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge origin master
Run Code Online (Sandbox Code Playgroud)
Seb*_*tte 17
因为它可能会发生,你的子模块的默认分支都没有 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'
Run Code Online (Sandbox Code Playgroud)
mrt*_*rts 12
在最近的Git(我正在使用v2.15.1)中,以下内容将递归地将上游子模块更改合并到子模块中:
git submodule update --recursive --remote --merge
Run Code Online (Sandbox Code Playgroud)
您可以添加--init
初始化任何未初始化的子模块,--rebase
如果要进行rebase而不是merge,则使用它们.
您需要在之后提交更改:
git add . && git commit -m 'Update submodules to latest revisions'
Run Code Online (Sandbox Code Playgroud)
小智 11
怎么样
git config --global submodule.recurse true
Run Code Online (Sandbox Code Playgroud)
忘记它了吗?
请参阅git 书籍文档。