在Eclipse中恢复Git reset --hard的操作

5

我不小心在我的git repo上做了一些事情,现在不确定能否保存我的项目...

我做了很多修改。然后我想删除我的最后一次提交,以便我可以做这个新的提交。我忘记了执行git stash。所以当我运行git reset --hard [倒数第二次提交]时,它抹掉了我所做的一切。虽然这很愚蠢,但是我是否有任何方法来挽救我的最近工作?

我正在使用Eclipse IDE。


你在进行硬重置之前,是否已经提交、存储或至少将文件添加到索引中了? - William Chong
不好意思,就像我所说的,我在做这件事之前没有考虑清楚。 :( - brienna
@briennakh 你执行了一个没有提交的 add 操作吗? - scharette
1
不行。这是一次残酷的学习经历 :( - brienna
4个回答

3

对于git来说,简短回答是不行。

如果你没有使用add或者stash命令,那么恢复文件是不可能的。


一般来说,处理这类问题最好的方法是依赖IDE

在Eclipse中,你可以查看以下路径:

.metadata/.plugins/org.eclipse.core.resources/.history/

因此,您可以使用这些命令查找最新的更改。
cd .metadata/.plugins/org.eclipse.core.resources/.history/
ls -al * | grep "<today's date>" | grep "r\-\-" | sort -k 6

请注意,您需要将"<today's date>"替换为"Jul 27"等日期。
然后您可以使用


find . -name <filename>

请注意,您需要用前面的命令找到类似于"7098a672a2bc00111703c0e5cbee369d"的内容来替换"<filename>"
更多信息请参见此处

2

很遗憾,git无法知道您未提交或隐藏的文件内容。这意味着您无法使用git恢复更改。其他工具可能会有所帮助。例如,IntelliJ具有“本地历史记录”功能,可跟踪所有保存的更改。也许您的编辑器有类似的功能?


我使用了 Eclipse。 - brienna
@briennakh 这可能会有所帮助 - Code-Apprentice
Git与此无关。你不仅运行了reset,而且还传递了一个--hard标志。与其远离它,不如学习基础知识。只有正确理解Git时,它才真正强大。 - scharette
1
@briennakh Git是一个很好的工具。你应该把这看作是一个学习经验,更加谨慎地使用任何git命令,而不是完全放弃它。 - Code-Apprentice
是的,只是对@Code-Apprentice感到沮丧。 - brienna
@briennakh 我理解你的痛苦。看看我提供的Eclipse帮助文件链接,你应该能够找到一些有用的工具来恢复你的工作。 - Code-Apprentice

2
你在评论中提到你正在使用Eclipse - 通常Eclipse会保留你所做的更改的本地历史记录。以下步骤可能有助于此问题:
从本地历史记录中恢复已删除的资源 要还原带有本地历史状态的已删除工作台资源:
在其中一个导航视图中,选择要还原本地历史状态的文件夹或项目。
从资源的快捷菜单中,选择“从本地历史记录还原...”。打开“从本地历史记录还原”对话框,显示先前包含在所选文件夹或项目中的所有文件及其所有子文件夹。
选中要还原的文件。
如果您不想还原文件的最后一个状态,可以从对话框右侧的“本地历史记录”列表中选择文件的任何其他状态。对话框的底部窗格显示状态的内容。
如果您完成了所有文件,请单击“还原”。
提示:您可以配置Workbench首选项以指定要保留多少天的文件,要保留多少个条目,或要保留的文件的最大文件大小,或使用命令链接“常规>工作区>本地历史记录”首选项页面。
此信息也可以在以下链接中找到:https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2Ftasks-87b.htm

谢谢,我会配置我的工作台首选项以避免将来出现这种情况。 - brienna

0

以下命令适用于我:

git reset --hard ORIG_HEAD

请查看此答案的更多详细信息:this

这是有用的信息,但它只会恢复最后一次提交的更改,而不是OP想要恢复的未提交的更改。 - NickSoft
你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接