git diff --patience是什么意思?

耐心算法与默认git diff算法有何不同?我何时要使用它?



米琪卡哇伊
浏览 541回答 3
3回答

吃鸡游戏

相反,Patience Diff将精力集中在低频高含量行上,这些行用作文本中重要内容的标记或签名。它的核心仍然是基于LCS的差异,但有一个重要区别,因为它仅考虑签名行的最长公共子序列:找到在两侧恰好发生一次的所有行,然后在这些行上执行最长的公共子序列,使其匹配。什么时候应该使用耐心差异?根据Bram的说法,耐心差异对这种情况有好处:真正糟糕的情况是,两个版本的差异很大,开发人员并不小心控制补丁大小。在这种情况下,diff算法有时会变得“错位”,因为它会将大括号的花括号匹配在一起,但最终会使一个版本中的函数的花括号与另一版本中的下一个后面的函数的花括号相关联。这种情况非常丑陋,并且在您最需要最连贯呈现这种情况的情况下,可能导致完全无法使用的冲突文件。

慕斯709654

您也可以将其用于合并(对于某些XML冲突,在这里工作得很好):git merge --strategy-option=patience ...

胡说叔叔

耐心差异算法是一种较慢的差异算法,在某些情况下显示出更好的结果。假设您已将以下文件签入到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.cssindex 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=patiencediff --git a/example.css b/example.cssindex 7f1bd1e..6a64c6f 100755--- a/example.css+++ b/example.css@@ -1,7 +1,8 @@-.foo1 {-    margin: 0;-}- .bar {     margin: 0; }++.foo1 {+    margin: 0;+    color: green;+}
打开App,查看更多内容
随时随地看视频慕课网APP