Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“git diff--patience”是什么意思?_Git_Diff - Fatal编程技术网

“git diff--patience”是什么意思?

“git diff--patience”是什么意思?,git,diff,Git,Diff,patience算法与默认的git diff算法有何不同?我什么时候想使用它?你可以阅读patience diff算法的作者,但我发现patience diff算法总结得非常好: 相反,Patience Diff将精力集中在低频高内容行上,这些行作为文本中重要内容的标记或签名。它的核心仍然是基于LCS的diff,但有一个重要的区别,因为它只考虑签名行的最长公共子序列: 找到两边正好出现一次的所有直线,然后在这些直线上执行最长的公共子序列,将它们匹配起来 你什么时候应该用耐心来区分?根据Bram的

patience算法与默认的git diff算法有何不同?我什么时候想使用它?

你可以阅读patience diff算法的作者,但我发现patience diff算法总结得非常好:

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

找到两边正好出现一次的所有直线,然后在这些直线上执行最长的公共子序列,将它们匹配起来

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

真正糟糕的情况是两个版本出现分歧 引人注目的是,开发人员没有注意保持补丁大小 在控制之下。在这种情况下,diff算法偶尔会出现 变得“错位”,因为它与花括号的长部分相匹配 这两个函数组合在一起,但它最终关联了 一个版本中的下一个后续函数带有花括号 其他版本。这种情况是非常丑陋的,可能会导致彻底的失败 无法使用的冲突文件的情况下,你需要这样的东西 最连贯地呈现


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


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

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

.foo1{
保证金:0;
}
.酒吧{
保证金:0;
}
现在,我们对各部分重新排序并添加新行:

.bar{
保证金:0;
}
.foo1{
保证金:0;
颜色:绿色;
}
默认的差异算法声明节标题已更改:

$ 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;
 }
而patience diff显示的结果可以说更直观:

$ 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;
+}
还有,还有


请注意,

可能与移动的代码和修改的行匹配,这可能会慢得多。我从Bazaar中提取了一个独立的Patience Diff脚本,您可以在中找到它。后续问题。什么时候我不应该使用patience diff?还有一个
--histogram
参数“…将patience算法扩展到“支持低出现率公共元素”,在我目前使用XML的经验中,它给出了完全相同的“坏元素”“结果作为一个正常的差异,我有更好的运气耐心差异与XML;当然,我现在看到的diff与常规diff算法描述的不对齐问题完全一样,但是耐心diff看起来非常棒。这个博客有一个很好的解释,包括过程的动画gif:我发现这个博客非常有趣,并提供了很好的解释和算法细节的进一步链接:希望它对某些人有用frobnitz/fib/fact diff可以在git config上或通过
git config--global diff.algorithm patience
Shorter将是
git merge-X patience
$ 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;
+}