失去了最后的Git承诺

时间:2010-02-27 17:33:24

标签: git version-control commit

我丢失了我的最后一次提交,因为我不小心跑了“git reset --hard HEAD ^”。注意:我不想把“^”放在最后。

有没有办法让它回来?这是2天的工作:(

3 个答案:

答案 0 :(得分:26)

我认为this article正是您所寻找的。根据这篇文章,你的提交“已经消失”,但不是垃圾收集 - 有点像Windows中的回收站。

您运行git fsck --lost-found以查找'悬空提交',并使用git reflog查看,然后将悬空提交与您当前的分支git merge 7c61179合并。

答案 1 :(得分:22)

git使回到先前状态变得非常容易,并且非常努力地防止您丢失您已经提交的任何数据。这就是你应该经常提交的原因。我有一个命令git trash执行git reset --hard状态,但是在写完提交后我可以在需要时撤消硬重置。

对于最新状态(即您的确切情况),只需执行git reset --hard ORIG_HEAD即可撤消您刚刚执行的操作。

您可以执行基于时间的重置git reset --hard '@{5 minutes ago}'根据时间将自己置于先前状态(您可以使用许多选项,例如{{1}假装今天从未发生过。)

否则,浏览git reset --hard '@{yesterday}'输出,找到您感觉处于不良状态的操作之前的事情并重置为该状态。

答案 2 :(得分:7)

如果您知道提交ID(例如,在您的终端上滚动或使用git reflog),

git reset --hard 61567de5d9

其中61567de5d9是最新(丢失)提交的第一个数字。