切换分支时自动更新Git子模块的Hook需求及问题咨询
解决Git子模块随主分支切换自动同步的问题
这种子模块版本不跟着主分支切换走的坑我踩过好多次!Git默认不会自动同步子模块的状态,所以你切分支后子模块还停留在之前的版本太正常了,给你几个实用的解决办法:
切换分支时直接同步子模块
下次切换分支的时候,加上--recurse-submodules参数:git checkout newfeature-foo --recurse-submodules这个命令会在切换主分支的同时,自动把所有子模块checkout到当前主分支对应的commit版本,一步到位。
配置Git默认自动处理子模块
如果你经常需要在不同分支间切换,每次加参数太麻烦,可以全局配置让Git默认同步子模块:git config --global submodule.recurse true配置之后,不管是
git checkout还是git pull,Git都会自动处理子模块的同步,不用再手动操作。已经切换分支后的补救操作
要是你已经切了分支才发现子模块没更新,不用重新切,直接运行下面的命令就能把所有子模块同步到当前主分支对应的版本:git submodule update --recursive
注意:如果你的Git版本低于2.13(可以用git --version查看),--recurse-submodules参数可能不支持,这时候只能用组合命令:
git checkout newfeature-foo && git submodule update --recursive
内容的提问来源于stack exchange,提问作者errantlinguist
相关产品推荐
相关产品推荐

