我丢失了我的最后一次提交,因为我不小心跑了“git reset --hard HEAD ^”。注意:我不想把“^”放在最后。
有没有办法让它回来?这是2天的工作:(
答案 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是最新(丢失)提交的第一个数字。