Visual Studio 2022本地Git提交未在历史记录中显示如何解决
Visual Studio 2022 本地Git提交后提交历史不显示新提交
我当前使用Visual Studio 2022完成了一次本地Git提交:
但打开提交历史面板时,找不到这次刚完成的提交:
从VS2019升级到2022之前这个功能一直正常工作。
2022年6月7日更新
我用Git Gui检查对应仓库文件夹和VS解决方案,所有提交记录都能正常完整展示,确认提交本身没有丢失,问题出在Visual Studio的提交历史显示模块。
当前VS环境信息
- 基础版本:Microsoft Visual Studio Professional 2022 (2) 17.2.3,完整版本号VisualStudio.17.Release/17.2.3+32526.322
- 运行环境:Microsoft .NET Framework 4.8.04161
- 授权版本:Professional
- 已安装组件:
- Visual C++ 2022 00483-10700-25814-AA515
- .NET Core Debugging with WSL 1.0
- ADL Tools Service Provider 1.0(包含Data Lake工具所需服务)
- ASA Service Provider 1.0
- ASP.NET and Web Tools 2019 17.2.392.13739
- Azure App Service Tools v3.0.0 17.2.392.13739
- Azure Data Lake Tools for Visual Studio 2.6.5000.0
- Azure Functions and Web Jobs Tools 17.2.392.13739
- Azure Stream Analytics Tools for Visual Studio 2.6.5000.0
- C# Tools 4.2.0-4.22252.24+47cdc16a21bbb8a4aadfb666b011e2059e1be5d2(IDE内置C#组件,会根据项目类型和配置使用对应版本编译器)
- Common Azure Tools 1.10(为Azure移动服务及其他Azure工具提供通用服务支持)
- Extensibility Message Bus 1.2.6 (master@34d6af2)(为VS扩展间松耦合通信提供基于消息的MEF通用服务)
- Microsoft Azure Hive Query Language Service 2.6.5000.0
- Microsoft Azure Stream Analytics Language Service 2.6.5000.0
- Microsoft JVM Debugger 1.0(支持VS调试器连接兼容JDWP协议的Java虚拟机)
- Mono Debugging for Visual Studio 17.2.20 (482eb2a)(支持在VS中调试Mono进程)
- NuGet Package Manager 6.2.0(VS内置NuGet包管理器)
- Office Developer Tools for Visual Studio 17.0.32314.00
- Razor (ASP.NET Core) 17.0.0.2218101+885a343b00bcab620a90c1550c37dafd730ce984(提供ASP.NET Core Razor语言服务支持)
- SQL Server Data Tools 17.0.62204.01010
- ToolWindowHostedEditor 1.0(支持在工具窗口中托管JSON编辑器)
- TypeScript Tools 17.0.10418.2001
- Visual Basic Tools 4.2.0-4.22252.24+47cdc16a21bbb8a4aadfb666b011e2059e1be5d2(IDE内置VB组件,会根据项目类型和配置使用对应版本编译器)
- Visual F# Tools 17.1.0-beta.22253.3+058e7a7e597a02c129f38742f250a4b212da9ee3
- Visual Studio IntelliCode 2.2(VS AI辅助开发功能)
- VisualStudio.DeviceLog 1.0
- VisualStudio.Mac 1.0
- VSPackage Extension 1.0
- Workflow Manager Tools 1.0(包含Workflow Manager所需的VS集成组件)
- Xamarin 17.2.0.175 (d17-2@e4ffdc0)(支持Xamarin.iOS、Xamarin.Android开发)
- Xamarin Designer 17.2.0.244 (remotes/origin/d17-2@197e1a0b7)(提供Xamarin Designer设计器支持)
- Xamarin Templates 17.2.15 (2e3b60e)(提供Xamarin、Xamarin.Forms跨平台应用开发模板)
- Xamarin.Android SDK 12.3.0.3 (d17-2/bbba5a2),包含依赖:
- Mono: adf1bc4
- Java.Interop: xamarin/java.interop/d17-2@9760f0a9
- ProGuard: Guardsquare/proguard/v7.0.1@912d149
- SQLite: xamarin/sqlite/3.38.2@7b1e016
- Xamarin.Android Tools: xamarin/xamarin-android-tools/d17-2@fc3c2ac
- Xamarin.iOS and Xamarin.Mac SDK 15.10.0.1 (568bdb24e)(提供Xamarin.iOS、Xamarin.Mac参考程序集与MSBuild支持)
解决方案
这个问题是Visual Studio 2022 17.2.x版本的已知Bug,根源是VS内置Git模块的本地缓存损坏,提交本身已经正常写入仓库,只是VS的历史面板读缓存时漏读了新记录,按以下步骤操作即可修复:
- 先关闭所有打开的Visual Studio窗口,任务管理器里残留的
devenv.exe进程也一并结束 - 打开项目所在的Git仓库根文件夹,开启文件管理器的「显示隐藏的项目」选项,进入
.git目录,删除里面的vs-merge-base文件夹和ms-persist.xml缓存文件 - 用任意命令行工具(CMD、PowerShell、Git Bash均可)进入仓库根目录,执行
git fsck --full校验仓库完整性,确认没有Git对象损坏 - 重新用VS打开项目,切换到Git更改面板点击顶部的刷新按钮,等待Git模块重新加载完索引,再打开提交历史就能看到缺失的新提交
- 如果上述操作无效,打开VS的「工具→选项→源代码管理→Git全局设置」,找到「清除Git缓存」按钮点击后重启VS即可恢复正常
如果不想手动清理缓存,直接将VS升级到17.3及以上版本即可,微软已经在17.3版本中正式修复了这个提交历史漏显的问题。
内容的提问来源于stack exchange,提问作者Hong
相关产品推荐
相关产品推荐

