问题

有谁知道如何轻松撤消git rebase?

想到的唯一方法是手动处理它:

  • git向两个分支检查提交父级
  • 然后从那里创建一个临时分支
  • 手工挑选所有提交
  • 用manualy创建的分支替换我重新设置的分支

在我目前的情况下,这将起作用,因为我可以很容易地从两个分支发现提交(一个是我的东西,另一个是我的同事的东西).

但是我的方法让我觉得是次优的和错误的(假设我刚刚使用我自己的2个分支重新基础).

有任何想法吗?

澄清:我正在谈论重播一堆提交的重新基础.不仅仅是一个.

  最佳答案

最简单的方法是找到分支的头提交,因为它是在 reflog 中启动rebase之前...

 git reflog
 

并将当前分支重置为它(在使用 --hard 选项重置之前,通常要注意的是绝对确定的)。

假设旧提交在ref日志中是[email protected]{5}:

 git reset --hard [email protected]{5}
 

在Windows中,您可能需要引用引用:

 git reset --hard "[email protected]{5}"
 

您可以通过做一个git log [email protected]{5}(Windows:git log "[email protected]{5}")来检查候选人老头的历史。

如果您没有禁用每个分支reflogs,您应该能够简单地执行git reflog [email protected]{1}作为rebase分离分支头,然后重新连接到最终头.我会重复检查这个,尽管我最近没有核实这一点.

每次默认情况下,所有reflogs都被激活为非裸存储库:

 [core]
    logAllRefUpdates = true
 

  相同标签的其他问题

gitrebasegit-rebaseundo