失去了最后的Git承诺

Sco*_*dez 12 git version-control commit

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

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

Ben*_*nns 26

我认为这篇文章就是你要找的.根据这篇文章,你的提交"已经消失",但不是垃圾收集 - 有点像Windows中的回收站.

你跑去git fsck --lost-found寻找'悬挂提交',然后看看它git reflog,然后将悬空提交与你当前的分支合并,git merge 7c61179.


Dus*_*tin 22

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

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

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

否则,浏览git reflog输出以在您认为处于错误状态的操作之前找到该事物并重置为该状态.


Tro*_*nic 7

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

git reset --hard 61567de5d9
Run Code Online (Sandbox Code Playgroud)

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