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

3

假设我正在一个名为“latest”的分支上工作。完成任务后,我提交了工作。当我将更改从“master”分支合并到“latest”分支时,在解决冲突期间,我意外地接受了来自主分支的所有更改,结果在重新定位完成时,我失去了很多在“latest”中完成的工作。

考虑到我是在“latest”分支内重新定位的,那么我所做的工作的提交是否被接受的冲突解决方案覆盖?我的先前(原始)提交是否丢失?如果没有,我该如何检索它们。谢谢。

1个回答

2

您在 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>

@Kayote 在这种情况下,我还给你提供了使用 reflog 的选项。 - Tim Biegeleisen
1
@Kayote 旧的提交仍然是Git对象模型的一部分,它们之间的指针也仍然存在。 - Tim Biegeleisen
1
它们仍然存在...你可以通过reloj看到它们在使用什么。通常,你会撤销不正确的工作,就像你所描述的那样,通过重置...但是如果你想要在其上应用cherry-pick,你也可以这样做。 - eftshift0
我认为@eftshift0的意思是reflog - evolutionxbox
这不是借口……我通常在用手机写作时会注意这个……但是,一个词可能会偶尔溜过去,对吧? - eftshift0
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接