git-合并冲突

时间:2019-09-26 03:35:04

标签: git

我有一个功能和master分支。功能部件和master分支上的代码相同。我正在功能分支中进行更改,并创建PR到Master分支。我遇到合并冲突。

我正在执行以下操作:

git checkout master
git pull origin <feature branch>
git commit
git pull origin HEAD

在大多数情况下,自动合并会失败。我需要手动克隆master分支,并且需要将feature分支中的更改手动复制到master分支,然后将其推送到master。

  1. 要使自动合并成功需要做什么?
  2. 现在,当我手动解决合并冲突时,我正在执行PR和 现在错误消息是“无法创建PR作为主服务器, 分支是最新的”。创建PR和 然后合并为主人?

2 个答案:

答案 0 :(得分:0)

我建议您遵循正确的顺序处理合并。

  1. 首先获取本地两个分支的最新信息。
git checkout master
git pull 
git checkout feature
git pull 
  1. 现在,在功能分支之上合并主分支,以进行其他主更改。如果可以执行自动合并,则它可以完成。 git自动处理它。你不必做任何事情。如果无法完成自动合并,则必须解决冲突并加以解决。
git checkout feature
git merge master
  1. 一旦解决了冲突,现在您的本地功能将领先于远程主机。现在,您可以提出拉取请求。

要回答您的问题:

  
      
  • 要使自动合并成功需要做什么?
      没有。如果可以进行自动合并,则会自动完成。

  •   
  • 现在,当我手动解决合并冲突时,我正在执行PR和   现在错误消息是“无法将PR创建为主节点和分支   是最新的”。创建PR然后合并的必要步骤   给主人?
      看来您的功能分支只是指向   主分支。它没有其他更改。可能是   其他一些团队成员已经创建了PR和您的功能   分支与主分支保持最新。

  •   

答案 1 :(得分:0)

如果您说“要素和主分支上的代码相同”,是否意味着唯一的直接编辑发生在要素分支上,然后忠实地合并到母分支中?如果是这样,则应该没有任何冲突。

在您手动更改了在功能分支中更改的master中相同的代码位置之后,情况发生了变化。这些当然是相互矛盾的编辑。 (如果它们与字节完全相同,我认为git不会看到冲突,但是我不确定,这可能很难实现。)

问题是这些冲突一次又一次地弹出,因为您的手动接管未注册为合并。因此,git尝试应用相同的旧文件(手动合并),一次又一次地提交。

这里可能有用的是git的rerere功能。它注册并存储用户提供的冲突解决方案,并将其应用于以后遇到相同冲突的所有提交。因此,我建议激活rerere,以一种解决所有冲突的正式方式进行合并,从那时起,所有将来的合并都应按预期的方式进行。

或者(我实际上会建议这样做),您可以简单地重新开始:从当前的母带头开始设置一个新的功能分支,并避免旧的合并/编辑混乱带来的所有问题。