Git合并:我们的+他们的混合,忽略冲突。可能?

时间:2011-11-15 08:21:23

标签: git merge

我想知道我是否可以告诉git通过在“我们的”之后附加“他们的”代码块来解决冲突。 他是否“完全”了解C语言代码块?

示例:

//====== ours ======
....
if(cond1)
{
    do_smth();
}
....

//====== their ======
....
if(cond2)
{
    do_smth_else();
}
....

通常这样的合并会导致冲突,我想自动解决

//======= merge result ========
if(cond1)
{
    do_smth();
}

if(cond2)
{
    do_smth_else();
}

谢谢!

3 个答案:

答案 0 :(得分:2)

我明白将此标记为冲突似乎是一种烦恼,但它是设计上的。考虑以下情况,您添加:

if( cond1 || cond2 )
{
   perform_action1();
}

他们补充说:

if( cond1 )
{
   perform_action1();
}

他们添加的部分可能与您尝试完成的部分不符。如果他们的代码附加到您的代码上,那么perform_action1()将被调用两次。

简而言之,没有办法自动合并,因为几次这是一个坏主意,这将是真的坏主意。

答案 1 :(得分:0)

不,我担心git的合并算法不理解C程序的结构,也不理解任何其他编程语言。有options to git's recursive merge strategy for automatically resolving conflicting hunks in favour of ours or theirs,但据我所知,没有这样的选项可以自动包含两者。

答案 2 :(得分:0)

您可以使用union gitattribute

  

联合

     

为文本文件运行3向文件级别合并,但从两者中获取行      版本,而不是留下冲突标记。这往往会留下      在结果文件中以随机顺序添加行,用户应该      验证结果。如果你不明白,请不要使用它      影响。

正如@Greyson所说,但对于C代码来说,这不是一个好主意。有关示例,请参阅my answer类似的问题。