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

Wil*_*ard 6 git diff merge git-merge

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

.
return 1;
.
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

git merge -s recursive -X patience [branch]
Run Code Online (Sandbox Code Playgroud)

Tod*_*obs 5

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

使用此选项,merge-recursive 会花费一些额外的时间来避免有时由于不重要的匹配行(例如,来自不同函数的大括号)而发生的误合并。当要合并的分支出现严重分歧时使用此选项。

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

git checkout -b temp_merge_branch master
git merge --strategy-option=patience other_branch
Run Code Online (Sandbox Code Playgroud)

如果合并工作正常,您可以使用结果快进您的主分支。如果没有,您可以扔掉临时分支,并寻找其他替代方案。


Tob*_*obu 5

使用这些设置可以获得五行上下文的耐心差异:

git config --global diff.algorithm patience
git config --global diff.context 5
Run Code Online (Sandbox Code Playgroud)

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

git config --global diff.wordRegex '[A-z0-9_]+|[^[:space:]]'
Run Code Online (Sandbox Code Playgroud)

第一个设置需要Git 1.8.2.

  • 对于一个计时器,您可以使用`git -c diff.context = 5 merge -Xpatience <some-branch>` (2认同)