7

当我合并大的更改时,git 经常会感到非常困惑,因为它没有使用足够的上下文行。它混淆了两个不同子例程的相似结尾,而这两个子例程恰好都以:

.
return 1;
.
}

(此处用点表示空行)

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

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

git merge -s recursive -X patience [branch]
4

2 回答 2

5

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

使用此选项,合并递归会花费一些额外的时间来避免有时由于不重要的匹配行(例如,来自不同函数的大括号)而发生的错误合并。当要合并的分支大相径庭时使用此选项。

由于这看起来与您所描述的情况完全相同,因此耐心似乎是为帮助您而设计的。您可以像这样在一次性分支上试用它:

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

如果合并工作顺利,您可以将结果快进您的主分支。如果没有,您可以丢弃临时分支,并寻找其他替代方案。

于 2012-06-28T11:04:00.353 回答
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

于 2013-04-11T07:59:40.300 回答