在git中,如何增加合并的上下文?

时间:2012-06-28 09:32:35

标签: git merge diff git-merge

当我合并大量更改时,git经常被无可救药地混淆,因为它没有使用足够的上下文行。它在两个不同子程序的相似外观之间混淆,两个子程序都碰巧以:

结束
.
return 1;
.
}

(此处用于表示空行的点)

当我使用' git diff'时,我可以说-U20看到20行上下文。但是我可以告诉git在合并时使用这个标志吗?

答案可能与合并策略/选项有关,例如:

git merge -s recursive -X patience [branch]

2 个答案:

答案 0 :(得分:5)

使用这些设置可以在任何地方获得五行背景的耐心差异:

git config --global diff.algorithm patience
git config --global diff.context 5

如果经常使用--color-words,这也很有用:

git config --global diff.wordRegex '[A-z0-9_]+|[^[:space:]]'

第一个设置需要Git 1.8.2

答案 1 :(得分:4)

据我所知,在合并期间无法增加上下文行。 耐心差异算法应该更好地处理您的用例。 git-merge(1)手册页因此描述了它:

  

使用此选项,merge-recursive会花费额外的时间   避免因不重要而有时会发生的错误   匹配线(例如,来自不同功能的大括号)。用这个   当要合并的分支疯狂分歧时。

由于这看起来与您所描述的情况完全一样,因此耐心似乎是专门为您提供帮助的。你可以在一个扔掉的分支上试试这样:

git checkout -b temp_merge_branch master
git merge --strategy-option=patience other_branch

如果合并干净,您可以使用结果快进主分支。如果没有,你可以扔掉临时分支,寻找其他选择。