如何在变基之前检索旧提交

How to retrieve the old commit before rebase

说,我正在一个名为 'latest' 的分支上工作。完成任务后,我提交工作。当我将 'master' 分支的更改重新定位到 'latest' 分支时,在解决冲突期间,我不小心接受了 master & 结果的所有更改,最后,当重新设置完成时,我有丢失了我在 'latest' 中完成的很多工作。

考虑到我在 'latest' 分支中重新定位,我所做工作的提交是否被我接受的冲突解决方案覆盖?我以前的(原始)提交是否消失了?如果没有,我该如何取回它们。谢谢。

您在 latest 分支中所做的原始提交应该仍然可以在 git reflog 中访问。当前的 latest 分支现在有新的、重写的提交。您可以尝试筛选 reflog,但最快的方法可能是硬重置 latest 到远程跟踪分支 origin/latest:

# from latest
git reset --hard origin/latest

此选项假定,在您做出相关提交后,您推送到远程,从而更新(本地)跟踪分支 origin/latest。如果是这样,跟踪分支应该仍然与变基之前相同。

如果您在提交后没有推送您的本地分支,那么 reflog 可能仍然可以帮助您。输入 git reflog。然后,找到在拙劣的 rebase 之前作为分支的 HEAD 的提交。您可以使用提交消息来帮助您。获得该提交的 SHA-1 后,再次进行硬重置:

# from latest
git reset --hard <SHA-1 of your old HEAD>