我想知道我是否可以告诉git通过在“我们的”之后附加“他们的”代码块来解决冲突。 他是否“完全”了解C语言代码块?
示例:
//====== ours ======
....
if(cond1)
{
do_smth();
}
....
//====== their ======
....
if(cond2)
{
do_smth_else();
}
....
通常这样的合并会导致冲突,我想自动解决 :
//======= merge result ========
if(cond1)
{
do_smth();
}
if(cond2)
{
do_smth_else();
}
谢谢!
答案 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类似的问题。