如何在3向合并中忽略注释?

时间:2013-01-08 21:44:02

标签: git

所以我有以下回购:n1 - > n2 - > n3 - > master和n2 - > N4

我想使用git将n4合并回master,所以AFIAK:

BASE = n2,LOCAL = n3,REMOTE = n4,MERGED = master

我正在使用p4merge来显示合并,但现在出现了问题......

n2和n4已经注释掉了在master中慢慢取消注释的代码部分...但是视觉合并完全搞砸了...似乎任何注释行都可以匹配任何其他注释行...导致注释函数与其他代码的中间匹配的各种不匹配。 e.g。

LOCAL:

def foo
  impl foo
end

def bar
  impl bar
end

BASE / REMOTE:

# def foo
#   impl foo
# end 
#
# def bar
# end

合并:

def foo
  impl foo
  # def bar
  # end
end

毋庸置疑,我不希望代码合并。

我已经阅读了git中的自定义合并驱动程序,但我不确定如何设置它们...我的想法是,如果diff工具可能会以某种方式暂时忽略注释字符,我可能会得到更好的差异分析(虽然差异)然后正确地排队。我试图在p4merge中找到一个设置来做到这一点,但没有运气。在kdiff3中也可能有一种方法,但我想我会先尝试用合并驱动程序来解决这个问题。

任何有关设置或其他方法来解决此问题的建议将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

可能有用的一点是合并策略选项patience。它不会使代码混乱,并报告更少和更少的严重合并冲突。它与'git merge --strategy-option =耐心'一起使用。

git diff上下文中讨论该选项的另一个问题是What is 'git diff --patience' for?

当然,该选项在合并手册页中有所描述,git merge manual page