在Visual Studio -> 团队资源管理器 -> Git中撤销的更改是否可逆?

6

我正在使用Visual Studio 2019社区版,并意外地在“团队资源管理器”选项卡中撤消了所有已暂存文件的更改,导致我失去了最近一天的工作,现在想知道是否可以恢复更改的文件。

希望我已经清楚地解释了我的问题。提前感谢您的帮助。


在这些工作日里,你是否在任何时候提交了你的工作? - Romain Valeri
@RomainValeri 不好意思,没有。 - Fernando
如果是这样的话,由于你的IDE可能具有本地存储功能,恐怕你将无法通过git恢复你的文件。 - Romain Valeri
1个回答

5
我正在使用Visual Studio 2019 Community,并意外在团队资源管理器选项卡中撤销了所有已放入暂存区的文件所做的更改,导致我失去了所有最近一天的工作。
如果您确定已将文件放入暂存区,则可以恢复文件内容,尽管这可能会很痛苦!对于文件名,数据丢失是由于Git的工作方式(即当您将文件放入暂存区时,只创建并存储blob对象,而不是存储内容和文件名之间的匹配的filetree对象)。
如果您没有将文件放入暂存区,则一切都将丢失。
否则,请下载并安装Git Extensions
然后,在GitExtensions中打开您的存储库后,转到菜单项: "Repository" -> "Git Maintenance" -> "Recover lost objects"...
在那里,取消选中“显示提交和标记”(这将检查“显示其他对象”)。

enter image description here

现在,当您双击一行时,您应该能够获取从最近到最旧创建的文件的内容。

祝你好运!

我失去了我最近几天的工作。

附注:对于未来,您刚刚以艰难的方式学会了使用git时必须经常提交(一旦提交了您的工作,您将始终能够恢复)。之后,学习如何重写您的历史记录或修改最后一次提交。还要学习如何使用reflog

在另一个Stackoverflow问题中恢复暂存文件的其他方法(使用命令行):https://dev59.com/VWgu5IYBdhLWcg3wxZpL#58853981


小心使用GitExtensions,它会“破坏”你的.gitconfig文件,而开发人员并不关心 - Luizgrs
“恢复所选对象” - 它们将被恢复到哪个位置? - Gerard
@Gerard 这将直接在恢复的 blob 上创建标签(命名为 LOST_FOUND_n),您可以使用命令 git cat-file -p LOST_FOUND_1 查看内容。 - Philippe
在“恢复选定对象”之后,它们会从对象列表中消失。你提到的git cat-file命令可能有点高级,但是在执行git cat-file -p LOST_FOUNDx > myfile.cs之后,文件就会出现在磁盘上了。更简单的方法是先选择将文件保存到lost-found!幸运的是,在“恢复选定对象”之前,我已经手动保存了我的丢失内容。 - Gerard
1
@traxx2012 请注意,您绝不能让多天的工作未提交。您应该每天提交多次。之后,在推送/合并干净的提交历史记录之前,您有多种选项来清理历史记录:压缩提交、软重置或修改最后一次提交。但是,请经常提交... - Philippe
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接