git rebase 和revert

还原下现场,有以下两个分支,dev  ,p个人分支,p 分支在开发一个可能会用也可能不用的功能。

因为P个人分支经过rebase ,所以在merge 到 dev 分支时,不产生新的commit ,这也是本次事故比较容易处理的关键。

首先由P merge 到dev,之后未发现其他commit ,遂使用rebase ,打算无痕删除掉某些commit ,问题从这里出现了,我以为没有人在我第一次merge 后没有拉取过,但其实已经被同事A拉取到本地了

无痕删除一些commit之后,推送远程,我以为万事大吉了

在下午的时候,需要提交代码,照例先pull ,发现删除的commit 又传上来了。起初怀疑同事A未拉取,但是不应该啊,这是个老程序员了,不会force update 啊,那么就只有一种可能,该同事本地已经存在了这些commit 了,rebase 因为不产生新commit ,所以不会被更新到本地,本地推送就会再推送上来。

此时想到了git revert,也就是用新的commit 冲掉需要删除的commit。该方案会产生一些来回的commit ,但是是最保险的

在使用git revert 之后会产生一个类型关联的commit ,类似如下图

    Revert "add filed IsAgentSelfCustomer"

    This reverts commit 6959f3508067e10d17a7a8a896fc4171cec67110.

此时如果需要再次执行merge ,将p merge 到dev,会发现Already up to date. 即该commit 已经存在,事实也是的确存在了(之前的commit 并未删除)

所以要么合并 revert 记录,要么重新在p 分支修改commit ,再merge

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值