Visual Studio切换Git分支时报错Object reference not set to an instance of an object
Object reference not set to an instance of an object
触发原因
- Visual Studio本地Git缓存损坏:VS存储的仓库状态缓存文件异常,无法正确读取仓库元数据,调用未初始化的空对象触发异常
- 工作区变更冲突:当前分支存在未暂存/未提交的变更,与待检出分支的文件内容存在冲突,VS内置冲突处理逻辑未完成初始化就触发调用
- Git仓库对象损坏:本地仓库
.git目录下的对象文件缺失或损坏,VS读取仓库结构时获取到空值 - 内置Git插件Bug:旧版本Visual Studio的内置Git管理组件存在已知缺陷,分支切换场景下会触发空引用异常
解决方法
- 清理VS缓存
- 完全关闭所有Visual Studio窗口
- 删除仓库根目录下的隐藏
.vs文件夹 - 重新打开Visual Studio加载对应仓库,重试分支检出操作
- 处理工作区变更
- 在仓库根目录打开终端,执行
git status查看当前所有未提交变更 - 根据实际需求选择操作:执行
git stash暂存当前变更,或执行git commit -m "自定义提交说明"提交变更,或执行git checkout -- 目标文件名丢弃不需要的变更 - 操作完成后回到Visual Studio重试分支切换
- 在仓库根目录打开终端,执行
- 修复仓库对象
- 在终端执行
git fsck检测本地Git仓库的对象完整性 - 若存在损坏对象,执行
git gc --prune=now清理无效对象,也可以直接拉取远程仓库的全新副本替换本地损坏仓库
- 在终端执行
- 修复/升级Visual Studio
- 打开Visual Studio Installer,将当前VS升级到最新正式版本,修复已知Git插件缺陷
- 升级后问题仍存在的话,在Installer中选择对应版本的「修复」选项,重置VS内置组件配置
内容的提问来源于stack exchange,提问作者Nguyen Duc Y
相关产品推荐
相关产品推荐

