Git子模块卡在「变更」状态,VS Code源代码管理无法暂存/移除
VS Code 子模块变更无法暂存/移除的解决办法
刷新源代码管理缓存
打开命令面板(Ctrl+Shift+P / Cmd+Shift+P),执行Git: Refresh Source Control命令,强制刷新VS Code的Git状态缓存,很多时候能直接解决显示异常的问题。用Git命令行手动处理
- 终端进入根项目目录,执行
git submodule status,确认子模块的实际状态,看是不是真有未处理的变更 - 如果子模块内有未提交的改动,进入子模块目录:
- 要提交的话:
cd 子模块目录 && git add . && git commit -m "提交子模块变更" - 要丢弃的话:
cd 子模块目录 && git checkout .
- 要提交的话:
- 回到根项目,执行
git add 子模块目录手动暂存子模块的引用变更 - 如果子模块被误识别成普通文件,执行
git rm --cached 子模块目录,之后重新添加子模块:git submodule add <原仓库地址> 子模块目录
- 终端进入根项目目录,执行
重置VS Code的Git相关配置
- 关掉VS Code,删除项目根目录下的
.git/index.lock文件(如果存在),避免Git进程被锁定 - 重新打开VS Code,进入设置(Ctrl+, / Cmd+,),搜索
git.enableSmartCommit并勾选,再试一次操作 - 要是还不行,就禁用VS Code的Git插件,过几秒再重新启用
- 关掉VS Code,删除项目根目录下的
检查子模块的Git关联是否损坏
进入子模块目录,看有没有.git文件(注意是文件不是文件夹),如果是文件,说明关联坏了:- 删除这个
.git文件,回到根项目执行git submodule update --init --recursive,重新初始化子模块
- 删除这个
内容的提问来源于stack exchange,提问作者STeveBobJohn
相关产品推荐
相关产品推荐

