如何用一条命令将含子模块的Git仓库更新至origin最新提交?
同时更新主仓库与子模块的方案
Git本身没有提供单一内置命令能同时完成主仓库拉取最新提交和子模块远程更新,但可以通过组合原生命令或自定义别名实现需求。
1. 组合原生命令
直接执行以下命令即可完成主仓库和子模块的同步:
git pull && git submodule update --remote --merge
git pull:拉取主仓库origin的最新提交并合并到当前分支git submodule update --remote --merge:将子模块更新到其跟踪的远程分支最新提交,并合并到子模块本地分支(若偏好变基,可替换--merge为--rebase)
如果存在嵌套子模块,添加--recursive参数递归更新:
git pull && git submodule update --remote --merge --recursive
2. 自定义Git别名
为了简化操作,可给上述组合命令设置全局别名,比如git sync:
git config --global alias.sync '!git pull && git submodule update --remote --merge --recursive'
之后只需运行git sync就能一键完成主仓库与所有子模块的更新。
注意:若子模块未配置跟踪远程分支,需先通过git submodule set-branch --branch <目标分支> <子模块路径>设置跟踪分支,确保git submodule update --remote正常生效。
内容的提问来源于stack exchange,提问作者Edgar Barber
相关产品推荐
相关产品推荐

