“git diff--patience”是什么意思?
patience算法与默认的git diff算法有何不同?我什么时候想使用它?你可以阅读patience diff算法的作者,但我发现patience diff算法总结得非常好: 相反,Patience Diff将精力集中在低频高内容行上,这些行作为文本中重要内容的标记或签名。它的核心仍然是基于LCS的diff,但有一个重要的区别,因为它只考虑签名行的最长公共子序列: 找到两边正好出现一次的所有直线,然后在这些直线上执行最长的公共子序列,将它们匹配起来 你什么时候应该用耐心来区分?根据Bram的说法,耐心差对这种情况有好处: 真正糟糕的情况是两个版本出现分歧 引人注目的是,开发人员没有注意保持补丁大小 在控制之下。在这种情况下,diff算法偶尔会出现 变得“错位”,因为它与花括号的长部分相匹配 这两个函数组合在一起,但它最终关联了 一个版本中的下一个后续函数带有花括号 其他版本。这种情况是非常丑陋的,可能会导致彻底的失败 无法使用的冲突文件的情况下,你需要这样的东西 最连贯地呈现“git diff--patience”是什么意思?,git,diff,Git,Diff,patience算法与默认的git diff算法有何不同?我什么时候想使用它?你可以阅读patience diff算法的作者,但我发现patience diff算法总结得非常好: 相反,Patience Diff将精力集中在低频高内容行上,这些行作为文本中重要内容的标记或签名。它的核心仍然是基于LCS的diff,但有一个重要的区别,因为它只考虑签名行的最长公共子序列: 找到两边正好出现一次的所有直线,然后在这些直线上执行最长的公共子序列,将它们匹配起来 你什么时候应该用耐心来区分?根据Bram的
您还可以将其用于合并(对于某些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;
+}