将Git分支重置至历史提交后,如何同步更新子模块?
解决子模块同步到重置后主分支对应版本的方法
当你执行git reset --hard prev_commit_id重置主分支后,主仓库里记录的子模块版本指针已经更新到目标提交对应的状态,但本地子模块的工作区并不会自动同步——这就是你看到子模块有未暂存变更的原因。要把子模块也同步到目标提交对应的状态,执行以下操作即可:
批量同步所有子模块(包括嵌套子模块):
git submodule update --recursive --hard这个命令会强制所有子模块切换到主仓库当前HEAD指向的子模块commit版本,同时像主分支的
reset --hard一样,丢弃子模块本地所有未提交的变更,完全对齐主仓库记录的状态。同步单个子模块:
先进入目标子模块的目录,再执行:git reset --hard <目标子模块commit id>这里的目标commit id,就是主仓库在
prev_commit_id中记录的对应子模块的版本号。
内容的提问来源于stack exchange,提问作者24n8
相关产品推荐
相关产品推荐

