我已经看到很多博客文章和堆栈溢出文章说git config --global diff.algorithm patience
将允许两个差异和合并将耐心策略选项与默认递归算法一起使用。
我发现情况并非如此,我在下面的演示中展示了为什么不这样。
git config --global diff.algorithm patience //mythical config statement
git clone https://github.com/kjlubick/PracticingGit.git
cd PracticingGit
git checkout origin/patience-merge-1 -t
git checkout -b merge_test //temp branch for merging
git diff origin/patience-merge-2
meld提供,看起来不错。让我们尝试将其合并。git merge origin/patience-merge-2
<<
嗯?合并看起来很丑。尽管第9-19行实际上并未更改,但它们被标记为与diff完全不同的冲突/更改。如果我们强制合并使用耐心策略选项:
好多了。冲突与我们之前所做的差异匹配,并且在语义上是正确的。
git merge --abort git merge origin/patience-merge-2 -X patience
我如何使合并实际上使用耐心设置,而不仅仅是差异?
我尝试过的黑暗中的其他镜头(失败):
系统信息:Windows 8.1git版本1.8.4.msysgit.0(通过GitHub for Windows 2.0)
git config --global merge.algorithm patience git config --global merge.diff.algorithm patience
[我已经看到很多博客文章和堆栈溢出文章都说git config --global diff.algorithm耐心将允许diff和合并使用耐心策略选项以及默认递归...
git pmerge origin/patience-merge-2
而不是
git merge origin/patience-merge-2 -X patience
在我之前给出的示例中。
一种方法是修补git以添加您要的功能。
不需要更改代码的另一种选择是shell别名git命令。