You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:42:40