答案 0 :(得分:20)
因为它把代码放在代码中,没有人要求在那里。好像你有这个代码:
$foo = bar;
$baz = qxx;
这个改变:
$foo = bar;
$foo++;
$baz = qxx;
与此更改合并:
$foo = bar;
$foo--;
$baz = qxx;
以某种方式产生的方式:
$foo = bar;
$foo++;
$foo--;
--$baz;
$baz = qxx;
显然,这是邪恶的。
我猜想在man gitglossary
中有足够的关注因为合并算法涉及的越多,他们就越有可能产生这样的东西。
答案 1 :(得分:10)
用Linus Torvalds本人的话(取自git mailing list):
“邪恶的合并”是一种不会产生变化的东西 并且实际上并没有解决冲突
答案 2 :(得分:8)
我认为它可能被命名为'邪恶合并',因为在注释文件时会产生“git blame”难以解决的问题(生成行式历史注释)。
对于邪恶的合并“git show --cc
”具有非空紧凑组合差异(但我不确定它是否是等价关系;暗示可能仅在一个方向,即“邪恶合并”然后非空“git diff-tree -p --cc
”)。
答案 3 :(得分:0)
值得一提的是,“邪恶的合并”中的“邪恶变化”可能会失去默默,同时重新定义一个“邪恶的变化”,其中包含一个不与其他冲突的“邪恶变化”提交。
在such a case中使用--preserve-merges
无效。