能否恢复Visual Studio Git更改中误丢弃的文件?
Visual Studio Git误删Migrations关联文件恢复方案
完全可以恢复,按你当前的操作进度选对应方案即可:
- 方案1:丢弃操作后未做新的Git提交、未清理本地Git缓存
打开项目根目录的终端或者VS内置的开发者PowerShell,执行git reflog查看本地所有操作记录,找到执行丢弃操作前的那条记录对应的哈希值,执行git checkout <对应哈希值> -- Migrations/就能把Migrations目录下所有被误删的关联文件恢复到工作区。
如果你丢弃前曾经把相关文件加到过Git暂存区,哪怕没提交,执行git fsck --lost-found扫描悬空文件,之后打开项目下.git/lost-found/other目录,按修改时间排序找到最近生成的文件,重命名放回Migrations目录对应位置即可。 - 方案2:丢失的文件曾经被提交到Git(哪怕只提交到本地、没推远端)
打开VS右侧的Git资源管理器,切换到「提交历史」面板,找到最后一次包含完整Migrations相关文件的提交节点,右键选中提交详情里标记为已删除的关联文件(通常是EF框架自动生成的*ModelSnapshot.cs、迁移类对应的*.Designer.cs文件),选择「恢复」即可直接把选中的文件还原到当前项目,不需要整体回滚整个提交。 - 方案3:Git记录完全找不到(比如清理过本地仓库、丢弃后初始化过仓库等极端情况)
不需要手动补写文件,用EF框架的迁移命令自动补全即可。*注意:操作前先把现存的Migration代码做个本地备份,避免命令执行误覆盖现有内容。之后打开VS的包管理器控制台,将默认项目切换为存放迁移文件的项目,执行Add-Migration <和你现存最后一个迁移文件完全相同的名称>,EF检测到同名迁移、且模型状态和现存迁移逻辑匹配时,只会补生成缺失的设计器、快照类关联文件,不会生成新的迁移逻辑代码。
所有恢复操作完成后,建议执行
dotnet ef database update验证迁移文件和关联快照是否匹配,确认无报错再继续后续开发。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

