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)
据我所知,在合并期间无法增加上下文行。这耐心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)
如果合并工作正常,您可以使用结果快进您的主分支。如果没有,您可以扔掉临时分支,并寻找其他替代方案。
使用这些设置可以获得五行上下文的耐心差异:
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.