Git合并时出现重复冲突

14

我有一个名为master的分支和一个从master检出的名为feature的分支。

master会接收其他开发者推送的提交,而我经常将master合并回feature,以便它跟上来自其他分支的新开发。

然而,每次执行git merge master时,我都会在相同的文件中遇到相同的冲突,即使我之前已经解决了冲突并提交了更改。

有什么想法可以解决这个问题并防止它发生吗?

谢谢!


所有开发者都在同一个分支上提交代码了吗?我认为你应该为每个开发者创建一个专门的分支。顺便问一下,你是说冲突又出现了吗?源文件被再次更改了吗?你的提交记录消失了吗?你是指这个问题吗?还是说有新的文件推送时会出现冲突? - Kamran Amini
1
@kan:文件正在发生变化,但不是导致冲突的那些行。在某种情况下,在文件中经过所有冲突的行并再次进行git add之后,git甚至将其从索引中删除,因为它与已存在的文件完全相同。 - borfast
我不太明白,如果你已经合并过一次,那么它不会再次合并相同的内容。冲突只会发生在合并之后进行的新更改中。或者你是要执行变基(rebase)还是暂存(stash)操作? - kan
不要使用rebase或stashing。但显然这并不罕见。Git有一个工具来处理这个问题。请参阅下面ouah答案中的链接。 - borfast
@borfast,也许我错了,但 rerere 实际上并不是很常见,只有在您以不同方式合并不同但相似的分支或经常执行变基操作时才会很方便。正常的分支合并工作流程不需要它。 - kan
显示剩余2条评论
1个回答

10

首先考虑不将集成分支合并到功能分支中。

其次,请看一下git rerere命令并使用它:

$ git config --global rerere.enabled true

NAME

  git-rerere - Reuse recorded resolution of conflicted merges

DESCRIPTION

  In a workflow employing relatively long lived topic branches,
  the developer sometimes needs to resolve the same conflicts
  over and over again until the topic branches are done (either
  merged to the "release" branch, or sent out and accepted upstream)

看起来非常有用。下次我尝试这个特定的分支合并时会试一试。谢谢! - borfast
2
顺便说一下,你建议不要将集成分支合并到功能分支中。原则上听起来不错(直到最近我才开始这样做),但是你如何处理长期分支?你只在最后完成时合并它们吗?有时这意味着会有很多更改,这是危险的,正是我们试图通过定期将“主”合并到“功能”中避免的。 - borfast
1
如果你的意图是将功能的更改作为一些添加到主分支上,那么你可能想要将rebase功能合并到更新的主分支上。 - mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接