git可以撤消未分段文件的签出

时间:2010-04-22 08:31:57

标签: git

我不小心通过git checkout丢弃了我对本地工作树中文件的更改。这些文件目前尚未暂存。是否可以“撤消”此结帐?

15 个答案:

答案 0 :(得分:158)

如果您使用的是“专业”IDE,那么您可以从本地历史记录中恢复文件。 例如,在Rubymine中,您可以右键单击文件并观看独立于git更改的更改历史记录,现在保存了几次^^

答案 1 :(得分:92)

我相信如果一个文件被修改但尚未添加(暂存),那么它纯属“私人” 这意味着如果用索引或HEAD版本覆盖它,GIT就无法恢复它(除非你有一份当前工作的副本)。“

“私人”内容是仅在您当前目录中可见的内容,但未在Git中以任何方式注册。

答案 2 :(得分:50)

如果你在Sublime Text之类的编辑器中工作,并且有问题的文件仍然打开,你可以按ctrl + z,它将返回到git checkout之前的状态。

答案 3 :(得分:41)

很遗憾,您的更改已丢失。您的私人修改只是被覆盖。 除非您事先git stash结帐...

从更光明的一面取得它:你现在可以更好地实现它们了;)

答案 4 :(得分:23)

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

答案 5 :(得分:21)

OS X上开发?使用 Xcode?您可能很幸运!

comment by qungu中所述,OS X维护文件的自动保存版本历史记录,即使您不使用时间机器

因此,如果您通过粗心的git checkout .吹走了未经暂停的本地更改,那么

>
  

如果有人发现这个线程已经破坏了XCode中的一些工作,那么就有办法获得AutoSave历史记录。 XCode本身没有菜单条目来查看AutoSave历史记录,但它确实存储了它。如果您在TextEdit中打开有问题的文件,则可以恢复并查看文件>下的自动保存历史记录。还原

这真是太棒了,昨天为我工作了一天。

您可能会问,"为什么没有git命令行界面,这是用于 2016 2017 2018 2019,至少在将它们吹走之前备份文件?就像你知道的那样,在过去的三十年里,编写得很好的软件工具。"

或许你会问,"为什么在TextEdit中可以访问这个非常棒的文件历史记录功能,而不是我真正需要它的Xcode?"

......我认为这两者都会告诉你很多关于我们行业的事情。或许你可以去修理这些工具。哪个会超级。

答案 6 :(得分:3)

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

How to recover a dropped stash in Git?

即使你已经“隐藏”了这些变化。

答案 7 :(得分:2)

在VSCODE ctrl + z中(撤消)对我有用

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

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

答案 8 :(得分:1)

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

答案 9 :(得分:0)

我通常将所有工作都放在Dropbox文件夹中。这可以确保我在本地计算机和Github之外可以使用当前文件夹。我认为这是我保证除git之外的“版本控制”的另一步。 You can follow this in order to revert your file to previous versions of your dropbox files

希望这会有所帮助。

答案 10 :(得分:0)

技术上是的。但仅限于某些情况。例如,如果您有代码页,并且您点击了git checkout,并且您意识到您意外地检出了错误的页面或其他内容。转到该页面,然后单击“撤消”。 (对我来说,命令+ z),它会回到你打好古老的git checkout之前的确切位置。

如果您的网页已关闭,那么这将无效,然后您点击了git checkout。它仅在实际代码页打开时才有效

答案 11 :(得分:0)

如果您使用终端/ cmd提示打开,并使用了任何已显示未暂停更改的git命令(diffadd -pcheckout -p等),并且还没有关闭终端/ cmd提示符,因为如果向上滚动到运行上述git命令的位置,您仍然可以找到未分级的更改。

答案 12 :(得分:0)

我刚遇到这种情况,我检查了一个包含数小时工作的整个文件夹!幸运的是,我发现我的IDE Netbeans保留了每个文件的历史记录,即使我需要手动修复一些问题,也可以恢复99%的文件。

答案 13 :(得分:0)

伙计,

让我们像以前一样,非常幸运,回到编辑器中执行撤消操作(对于Mac,使用Command + Z),您应该在文件中看到丢失的内容。希望对您有帮助。当然,这仅适用于现有文件。

答案 14 :(得分:-1)

也许你的改变不会丢失。检查“git reflog”

我引用下面的文章:

“基本上你在Git中执行存储数据的每一个动作,你都可以在reflog中找到它。 Git很难不丢失你的数据所以如果由于某种原因你认为它有,你很可能可以使用git reflog挖掘它“

查看详情:

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