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


当前回答

如果您正在Netbeans上开发,请查看文件选项卡和文件编辑区域之间的内容。这里有“来源”和“历史”。在“历史记录”中,你会看到使用版本控制(git/other)所做的更改,但也有本地所做的更改。在这种情况下,局部更改可以拯救您。

其他回答

嗯,据我所知,最好的解决方案是使用IDE特性。

选择丢失文件的存储库,并右键单击它 在菜单>中查找本地历史显示历史 现在检查版本版本,你所有的文件都存在>,选择它,然后点击恢复。 这就是最可能的情况。

注意:上述解决方案适用于在任何IDE(如intelliJ)中进行更改或导入存储库。

答案来自这个SO

$ git reflog show

4b6cf8e (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to origin/master
295f07d HEAD@{1}: pull: Merge made by the 'recursive' strategy.
7c49ec7 HEAD@{2}: commit: restore dependencies to the User model
fa57f59 HEAD@{3}: commit: restore dependencies to the Profile model
3431936 HEAD@{4}: commit (amend): restore admin
033f5c0 HEAD@{5}: commit: restore admin
ecd2c1d HEAD@{6}: commit: re-enable settings app

# assuming you want to get back to 7c49ec7 (restore dependencies to the User model)

$ git reset HEAD@{2}

你的好日子回来了!:)

我刚刚做了git重置-困难和丢失了所有未提交的更改。幸运的是,我使用了一个编辑器(IntelliJ),我能够从本地历史记录中恢复更改。Eclipse应该允许您做同样的事情。

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

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

是的,你可以在git中从硬重置中恢复。

Use:

git reflog

来获取提交的标识符。 然后使用:

git reset --hard <commit-id-retrieved-using-reflog>

这招救了我几次命。

你可以在这里找到reflog的文档。