当我合并大的更改时,git 经常会感到非常困惑,因为它没有使用足够的上下文行。它混淆了两个不同子例程的相似结尾,而这两个子例程恰好都以:
.
return 1;
.
}
(此处用点表示空行)
当我使用 'git diff' 时,我可以说 -U20 来查看 20 行上下文。但是我可以告诉 git 在合并时也使用这个标志吗?
答案是否与合并策略/选项有关,例如:
git merge -s recursive -X patience [branch]
据我所知,在合并期间无法增加上下文行。耐心差异算法应该更好地处理您的用例。git-merge(1) 手册页是这样描述的:
使用此选项,合并递归会花费一些额外的时间来避免有时由于不重要的匹配行(例如,来自不同函数的大括号)而发生的错误合并。当要合并的分支大相径庭时使用此选项。
由于这看起来与您所描述的情况完全相同,因此耐心似乎是为帮助您而设计的。您可以像这样在一次性分支上试用它:
git checkout -b temp_merge_branch master
git merge --strategy-option=patience other_branch
如果合并工作顺利,您可以将结果快进您的主分支。如果没有,您可以丢弃临时分支,并寻找其他替代方案。
使用这些设置来获得具有五行上下文的耐心差异:
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。