避免合并冲突

时间:2012-09-28 16:22:32

标签: git git-merge

假设我在主分支中有一个文件:

Hello World!

我创建了一个新的分支A并将该文件修改为:

Hello World!
and a little more

然后我在master分支中修改同一个文件

Hello World, the bug is fixed!

有没有办法将2个分支合并为:

Hello World, the bug is fixed!
and a little more

无需解决冲突?

ps:全新的git所以我可能会错过一些明显的东西 - 我使用netbeans作为IDE并使用内置的合并功能

2 个答案:

答案 0 :(得分:3)

当两个更改正在修改相同的代码部分时,就会出现冲突。在没有人为参与的情况下,它无法通过机器智能自动解决,因为机器无法确切知道文字合并是否有效。请考虑以下示例:

基础版本:

char s[200];

第一个修改版本:

char s[100]; // reduce array size

第二个修改版本:

char s[200];
s[199] = 0;

如果合并工具符合您的建议,结果将是:

char s[100]; // reduce array size
s[199] = 0;

显然,结果是错误的。

所以不要指望机器可以为您解决冲突。我们的程序员保证在可预见的将来拥有此权限,:))

答案 1 :(得分:2)

冲突源于含糊不清,有时是不可避免的。尝试使用meld之类的工具来帮助您快速解决合并冲突并使其成为一种不那么痛苦的体验。

我还建议您首先从工作分支执行rebase,以便在尝试合并之前从master中获取更改。优先考虑首先在您的分支中本地解决冲突,以便您进行简单的快进合并。