首页 > 解决方案 > 如何在变基之前检索旧提交

问题描述

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

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

标签: gitbranchrebase

解决方案


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

# from latest
git reset --hard origin/latest

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

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

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

推荐阅读