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

Git子模块出现非预期改动无法通过git restore恢复该如何处理?

你遇到的是Git子模块的典型问题:_build/submodules/cl-webkit是父仓库关联的Git子模块,你执行git restore仅作用于父仓库的文件索引,不会修改子模块内部的HEAD指向,因此改动无法被清除。

解决方案

1. 立即清除当前未暂存的子模块改动

直接执行子模块更新命令,强制将该子模块重置到父仓库当前版本记录的对应commit:

git submodule update --init -- _build/submodules/cl-webkit

执行完成后再运行git status,该未暂存改动就会消失。

2. 避免后续误提交子模块改动

可以通过本地配置忽略该子模块的所有改动,该配置仅对你本地仓库生效,不会影响上游仓库和其他协作者:

git config submodule._build/submodules/cl-webkit.ignore all

如果后续需要主动更新该子模块,再临时关闭该忽略配置即可。

3. 已误提交时的快速回退方法

如果已经将子模块改动提交到了本地分支,可通过以下命令回退该改动,不需要重新拉取分支:

# 重置父仓库中记录的子模块commit哈希
git checkout HEAD -- _build/submodules/cl-webkit
# 修正最近一次提交
git commit --amend --no-edit

内容的提问来源于stack exchange,提问作者Pedro Delfino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:51:03