为了账号安全,请及时绑定邮箱和手机立即绑定

git diff --patience是什么意思?

git diff --patience是什么意思?

Git
米琪卡哇伊 2019-12-10 10:16:29
耐心算法与默认git diff算法有何不同?我何时要使用它?
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

相反,Patience Diff将精力集中在低频高含量行上,这些行用作文本中重要内容的标记或签名。它的核心仍然是基于LCS的差异,但有一个重要区别,因为它仅考虑签名行的最长公共子序列:


找到在两侧恰好发生一次的所有行,然后在这些行上执行最长的公共子序列,使其匹配。


什么时候应该使用耐心差异?根据Bram的说法,耐心差异对这种情况有好处:


真正糟糕的情况是,两个版本的差异很大,开发人员并不小心控制补丁大小。在这种情况下,diff算法有时会变得“错位”,因为它会将大括号的花括号匹配在一起,但最终会使一个版本中的函数的花括号与另一版本中的下一个后面的函数的花括号相关联。这种情况非常丑陋,并且在您最需要最连贯呈现这种情况的情况下,可能导致完全无法使用的冲突文件。


查看完整回答
反对 回复 2019-12-10
?
慕斯709654

TA贡献1840条经验 获得超5个赞

您也可以将其用于合并(对于某些XML冲突,在这里工作得很好):


git merge --strategy-option=patience ...


查看完整回答
反对 回复 2019-12-10
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

耐心差异算法是一种较慢的差异算法,在某些情况下显示出更好的结果。


假设您已将以下文件签入到git中:


.foo1 {

    margin: 0;

}


.bar {

    margin: 0;

}

现在,我们对各节进行重新排序并添加新行:


.bar {

    margin: 0;

}


.foo1 {

    margin: 0;

    color: green;

}

默认的diff算法声称部分标题已更改:


$ git diff --diff-algorithm=myers   

diff --git a/example.css b/example.css

index 7f1bd1e..6a64c6f 100755

--- a/example.css

+++ b/example.css

@@ -1,7 +1,8 @@

-.foo1 {

+.bar {

     margin: 0;

 }


-.bar {

+.foo1 {

     margin: 0;

+    color: green;

 }

而耐心差异显示的结果可以说更直观:


$ git diff --diff-algorithm=patience

diff --git a/example.css b/example.css

index 7f1bd1e..6a64c6f 100755

--- a/example.css

+++ b/example.css

@@ -1,7 +1,8 @@

-.foo1 {

-    margin: 0;

-}

-

 .bar {

     margin: 0;

 }

+

+.foo1 {

+    margin: 0;

+    color: green;

+}


查看完整回答
反对 回复 2019-12-10
  • 3 回答
  • 0 关注
  • 504 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信