意外地恢复为主文件,丢失了未提交的更改

我已经设法犯了一个大错误(在一个星期一早晨),在Master上工作,忘记创建新分支,对文件进行更改,然后无意中将其还原到Master,失去了所有更新。我没有提交更新的文件。

我丢失了所有更新还是可以找回它们?

不要问我怎么做,因为每次我想起来,我都要面对自己。


DIEA
浏览 809回答 3
3回答

慕莱坞森

如果您尚未提交,暂存或隐藏所做的更改,则无法恢复这些更改。编辑:恢复丢失的更改。在Mark Longair的建议上添加此内容(在评论中)。这还包括他在下面的答案中的几个SO链接(*),我发现这些链接非常有用。如果您曾经提交过一些更改而丢失了该提交(例如以分离状态提交),则可以使用来找到该提交reflog。请参阅此SO问题 *。如果您丢失了上一阶段的更改,则也可以恢复。请参阅此SO问题 *。(我自己从未使用过或尝试过)。如果你已经藏匿的变化,你也可以使用恢复pop或apply。(我不确定弹出/放下的隐藏存储是否也可以恢复,但未提交)。您可能会在git中发现此恢复丢弃的存储很有用。如果有人可以建议其他任何方法,我将进一步编辑此答案以添加它们。

一只萌萌小番薯

两个长镜头:一些IDE(例如Delphi)保留了编辑器历史记录。您可能在那里有追索权。接下来,如果您的本地工作目录位于MyDocuments文件夹中,则它可能已经由Windows Home Server,Carbonite,MozyPro等自动备份了。这些通常是“设置后忘记了”。也许你忘了吗?

拉丁的传说

此处的关键问题是对文件进行更改后的操作。如果创建的提交包含文件的新状态,则应该能够通过查看中的最新条目git reflog,找到提交的SHA1sum并使用git branch recovered <SHA1sum>或类似内容从中创建一个新分支来找回它们。在此答案中有一个执行此操作的示例。如果您git add对任何文件进行了登台,也应该可以将它们取回,但这是更多工作-Jakub在此答案中描述了如何执行此操作。如果您碰巧git stash要给自己一个干净的状态,那么您当然可以像其他藏家一样将其取回。否则,恐怕这个消息不好。我希望事后指出这一点不会令人气愤,但只要切换回master分支,您就不需要使用任何可能会丢失数据的命令- git checkout master会告诉您您已经在master分支上,并显示所有未提交的更改。(git reset --hard考虑到^W我以这种方式丢失数据的人的频率,如果有未提交的更改,可以说是“是的,我的意思是真的”确认。)
打开App,查看更多内容
随时随地看视频慕课网APP