git merge 回退_【git】有 conflict 的时候不是回退的越早越好

本文探讨了程序员在处理Git合并冲突时的常见流程,包括回退、切换分支、拉取最新代码、合并等步骤。作者指出,错误地认为回退到早期版本能更容易解决冲突是一个误区,并解释了这一误区背后可能涉及的Git内部机制。正确的做法是在冲突发生时,将本地分支回退到最近的合并点,然后进行相应的合并操作。
摘要由CSDN通过智能技术生成

[注:本文不适合没有 git 基础的读者]

程序员在提 PR 的时候遇到 conflict 是很常见的事情。

我们遇到这类问题处理时的大概流程就是:回退文件,切换到 master,pull 最新的 master,切回开发的 branch,merge master。当然也可以 rebase,这些看个人习惯。

我之前有一个误区,有冲突的时候,回退的文件越早越容易解决 conflict。这些只用文字不太好说清楚,我们来画一个图。

e068e265effcd2e5746b62278002be96.png

比方说,两个人现在都在改一个文件,其他人的文件现在已经 merge 进 master 了,但是我改的文件才刚刚提 PR,这个时候就会有 conflict 出现,即,上图的 a3 点。这个时候我的做法应该是

1)本分支回退到 (a1,m2),

2)切换到 master,

3)pull master,

4)切换回我的分支,

5)merge master,

6)在这个基础上添加改动。

但是,我之前的理解有一个误区,就是第 1)步应该回退的越早越好,比如说回退到 m1,我认为这个也能 resolve conflict,但事实上,这个并不行。这可能是因为 b2 只能接受任何直接来自于 m2 的 branch 的 merge 操作,比如 a1 或 b1,但他们之前的节点它无法认出来,至于说为什么认不出来,这和 git 的某种内部机制有关,我这里也没搞得太清楚,以后有机会会去理解下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值