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


当前回答

IntelliJ有一个临时文件夹,可以通过history命令访问:

在导航窗格中选择要还原文件的文件夹 双击Shift键(Shift - Shift) 在弹出的输入框中输入本地历史记录并按Enter 选择显示历史记录 现在您可以恢复到所需的版本。

其他回答

我不小心运行git重置-对我的回购今天也很难,而今天也有未提交的更改。为了找回它,我运行git fsck——lost-found,它将所有未引用的blobs写入<path To repo>/.git/lost-found/。由于文件未提交,我在<路径repo>/.git/lost-found/的另一个目录中找到了它们。从那里,我可以使用git show <filename>看到未提交的文件,复制出blob,并重命名它们。

注意:只有当你将想要保存的文件添加到索引中时(使用git add .),这才有效。如果文件不在索引中,就会丢失。

如果你使用IntelliJ:

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

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

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

这把我救了出来!

如果我丢失了一些零钱,我通常会这么做。

git reflog
git checkout <commit id> // now you are in where you want but you cannot push from detached branch to master
manually copy and paste changes from detached branch to master or working branch
git reset --hard HEAD // if needed
git add ... > git commit ... > git push ...

要将指针移回你之前的提交,但保持你在最近一次提交中所做的更改,checkout git reset -soft dadada

当我在做一个本地项目时,我想把它移动到GitHub上,然后创建一个新的存储库。当我试图用.gitignore将所有这些文件添加到新的存储库中时,我不小心添加了一个错误的文件,然后试图清除它。

我运行了git reset -hard origin/master

然后我所有的本地文件都被删除了,因为回购是空的。我以为一切都消失了。

这招对我很管用:

git reflog show
git reset HEAD@{1} 
git push 

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

以前的分段更改(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存储本地历史;这样的功能可能会节省你的**