在 git pull 后,我使用 git reset hard 撤销了合并前的提交。但不知何故整个提交都消失了,在历史记录中也看不到该提交。但是,我有该提交的 commit id,在 git show 命令中我可以看到我的更改。
我应该如何找回我的更改,并追踪我犯了什么错误?
我应该如何找回我的更改,并追踪我犯了什么错误?
如果您有提交哈希值,并且没有运行垃圾回收,您可以始终使用 git checkout <sha1>
回到该提交。如果您想在当前分支上重新应用它,可以使用 git cherry-pick <sha1>
。
git reset --hard
被定义为放弃所有未提交的更改,将当前分支移动到指定的提交并检出它。之前指向的提交记录在 reflog 中,因此您始终可以从那里提取它(HEAD@{1}
表示 HEAD
的上一个值,branchname@{1}
表示 branchname 的上一个值(@{2}
表示两个操作之前的值,依此类推;默认情况下,历史记录在一段时间后过期(我不确定默认是 30 天还是 90 天)。 - Jan Hudec
git pull
永远不会从历史记录中删除提交;你肯定做了其他的事情。也许是checkout
,也许是reset
? - Cascabel