git 撤销刚才的rebase_撤销rebase与git原理

现在我们在分支 b 上,然后 rabase 到分支 a 上。如图所示:

平时开发中经常遇到这种情况,假设分支 a 和 b 是两个独立的 feature 分支,但是不小心被我们错误的 rebase 了。现在相当于两个 feature 分支中原本独立的业务被揉起来了,当然是我们不想看到的结果,那么如何撤销呢?

一种方案是利用 reflog 命令。

利用 reflog 撤销变基

我们先不考虑原理,直接上解决方案,首先输入 git reflog,你会看到如下图所示的日志:

最后的输出其实是最早的操作,我们逐条分析下:

HEAD@{8}: 这里我们创建了初始的提交

HEAD@{7}:检出了分支 a

HEAD@{6}:在分支 a 上做了一次提交,注意 master 分支没有变动

HEAD@{5}:从分支 a 回到分支 master,相当于向后退了一次

HEAD@{4}:检出了分支 b

HEAD@{3}:在分支 b 上做了一次提交,注意 master 分支没有变动

HEAD@{2}:这一步开始变基到分支 a,首先切换到分支 a 上

HEAD@{1}:把分支 b 对应的那次提交变基到分支 a 上

HEAD@{0}:变基结束,因为是在 b 上发起的变基,所以最后还切回分支 b

如果我们想撤销此次 rebase,只要输入以下命令就可以了:

git reset --h

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值