Git-如何撤销放弃本地更改的未暂存文件的签出

我意外地通过Git Checkout丢弃了我对本地工作树中的文件所做的更改。文件此时未暂存。是否可以“撤销”此结帐?

129908 次浏览

我相信,如果一个文件被修改但尚未添加(暂存),它是纯粹的“私有”。
这意味着如果用索引或HEAD版本覆盖它,它不能被Git恢复(除非您在某处有当前工作的副本)。

一个";私人";内容仅在当前目录中可见,但不以任何方式在Git中注册。

注意:如其他答案中所述,如果使用IDE(具有本地历史记录)或打开编辑器(Ctrl+Z),则可以恢复更改。

很遗憾,您的更改已丢失。您的私有修改将被简单地覆盖。 除非您在结帐前git stash..

从光明的一面来看:您现在可以更好地实现事情;)

如果您使用的是“专业” IDE,则很有可能可以从本地历史记录中恢复文件。 例如,在RubyMine中,您可以右键单击文件并查看独立于Git更改的更改历史记录,现在已经保存了几次^^

如果您正在使用像Sublime Text这样的编辑器,并且有问题的文件仍然打开,您可以按Ctrl+Z,它将返回到Git签出之前的状态。

在IDE中检查本地历史记录。

也许您的更改没有丢失。选中“ git reflog ”

我引用下面的文章:

“基本上,您在存储数据的Git中执行的每个操作,您都可以在RefLog中找到它。Git非常努力地不丢失数据,,因此,如果出于某种原因您认为它有,那么您可以使用Git RefLog将其挖掘出来。”

查看详细信息:

http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html.

我通常把我所有的工作都放在一个Dropbox文件夹中。这确保了我可以在本地计算机和GitHub之外使用当前文件夹。我认为我的另一个步骤是保证“版本控制”,而不是Git.您可以按照此操作将您的文件恢复为以前版本的Dropbox文件。

希望这能有所帮助。

技术上是的。但只是在某些情况下。例如,如果您打开了代码页,然后点击Git Checkout,然后您意识到您不小心签出了错误的页面或其他东西。转到页面并单击“撤消”。(对我来说,Command+Z),它将返回到您点击旧Git结帐之前的位置。

如果您的页面已经关闭,然后您点击Git Checkout,这将不起作用。只有当实际的代码页打开时,它才起作用。

对于这种情况,一个有效的救星是Time Machine(OS X)或类似的基于时间的备份系统。它为我节省了几次时间,因为我可以返回并只恢复一个文件。

在_上开发ABC_0使用Xcode?您可能很幸运!

群古的评论中所述,OS X维护文件的自动保存版本历史记录,即使你不用时间机器。

因此,如果您由于不小心git checkout .而破坏了未分阶段的本地更改,下面介绍了如何大概来恢复您的所有工作。

如果有人发现这个线程破坏了Xcode中的一些工作,有一种方法可以获得自动保存历史记录。Xcode本身没有一个菜单项来查看自动保存历史记录,但它确实存储了它。如果在“文本编辑”中打开有问题的文件,则可以还原并查看“文件”下的自动保存历史记录>;还原。

这太棒了,昨天我恢复了一天的工作。


您可能会问,";为什么Git命令行UI(20162017201820192020用于软件工程的首要VCs)不至少在将文件吹走之前备份文件?就像,你知道,在过去的三十年里,写得很好的软件工具。

或者您可能会问,";为什么在TextEdit中可以访问这个非常棒的文件历史功能,而在我真正需要它的地方却不能访问Xcode?";

…我认为,这两个都会告诉你很多关于我们行业的事情。或者你可以去修理那些工具。那就太棒了。

如果您之前隐藏了更改(例如,在重定基址之前),这可能会有所帮助。

如何在Git中恢复丢失的存储?

即使您已经“隐藏”了更改。

如果您在打开终端/cmd提示符的情况下工作,并使用了任何会显示未暂存更改的Git命令(diffadd -pcheckout -p等),并且此后没有关闭终端/cmd提示符,那么如果您向上滚动到运行上述Git命令的位置,您会发现未暂存的更改仍然可用。

我刚刚遇到了这种情况,我检查了一个包含工作时间的整个文件夹!幸运的是,我发现我的IDE NetBeans保留了每个文件的历史记录,这使我能够恢复99%的内容,即使我需要手动修复一些东西。

在VSCODE中,Ctrl+Z(撤销)对我有效。

git checkout .而不是git add .,所有文件更改都丢失了。

但现在,在我的Mac中使用command + z,恢复了更改,并为我节省了大量工作。

哥们,

让我们假设你是一个非常幸运的家伙,就像我一样,回到你的编辑器并执行撤销(Command+Z for Mac),你应该在文件中看到你丢失的内容。希望对你有帮助。当然,这只适用于现有文件。

在JetBrains IDE中,如phpStorm、WebStorm和PyCharm,您可以右键单击每个文件或文件夹并选择本地历史>;显示历史记录。

这将打开文件的“本地历史记录”视图,并在左窗格中列出所有最近的更改。

您可以右键单击最后一次更改并恢复。

如果您使用的是IntelliJ IDE,则可以撤消此操作。

  1. 在Project Explorer中右键单击要获取丢失的更改的文件。
  2. 本地历史记录->;显示历史记录
  3. 在左窗格中,您可以看到2个不同的时间戳,请选择它们
  4. 更改将在右侧显示。