有没有办法从git重置中恢复未提交的更改到工作目录-hard HEAD?


当前回答

如果你幸运地有相同的文件打开在另一个编辑器(例如。Sublime Text)试试按ctrl-z键。它救了我。

其他回答

我也遇到了同样的问题,我几乎要疯了....最初我提交了项目并合并。 后来当我尝试运行git push——set-upstream origin master时,我得到了这个错误

致命的:拒绝合并不相关的历史

所以我运行git reset—hard HEAD,它删除了一个3周的项目,但下面的几个命令挽救了这一天:

git reset HEAD@{1}         //this command unstage changes after reset
git fsck --lost-found      //I got the dangling commit fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b
git show <dangling commit something like-> fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b>
git rebase fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b

一般来说,您无法返回未提交的更改。

以前的分段更改(git add)应该可以从索引对象中恢复,所以如果你这样做了,使用git fsck——lost-found来定位与它相关的对象。(这将对象写到.git/lost-found/目录;从那里你可以使用git show <filename>来查看每个文件的内容。)

如果没有,答案是:看看你的备份。也许你的编辑器/IDE将临时拷贝存储在/tmp或C:\ temp之类的目录下

git reset HEAD@{1}

这将恢复到前一个HEAD

[1] vim例如,可选地存储持久撤销,eclipse IDE存储本地历史;这样的功能可能会节省你的**

你只能恢复你丢失的阶段性(git add)更改。

执行此命令可以方便地恢复

步骤:1进入工程项目根目录,执行该命令

npx git-recover

步骤:2输入恢复目录路径如

/Users/apple/RecoveryDirectory

你会在RecoveryDirectory中丢失文件

如果你使用IntelliJ:

在上下文菜单中,选择“本地历史记录”,单击子菜单上的“显示历史记录”:

项目或文件夹的本地历史视图会显示所有内容 你在过去几天所做的一切。的操作列中 在对话框的下半部分,选择要滚动的动作 回来。[…这样做,对话框的上部显示了更改文件的树状视图。如果您只想恢复已删除的文件,而不考虑此后所做的其他更改,您可以在树视图中选择文件Lost.txt,然后单击Revert按钮。

http://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/

这把我救了出来!

信息丢失了。

由于您没有提交,您的.git从未存储此信息。所以基本上git不能为你恢复它。

但是,如果你只是使用git diff,有一种方法可以通过以下3个简单步骤使用终端输出恢复。

滚动你的终端并寻找git diff的o/p,将o/p保存在一个名为diff.patch的文件中 搜索并替换所有7个空格和8个空格与制表符(\t)字符,并保存更改。 进入git存储库。应用diff.patch (patch -p1 < diff.patch)

注意:当您将数据从终端复制到文件时,要小心并清楚地看到数据是连续输出的,不包含任何冗余数据(由于按下向上和向下箭头)。否则你会搞砸的。