我找不到任何真实的例子,其中 --patience
给出的结果与正常策略不同。
基于 this回答,如果我有这个文件:
.foo1 {
margin: 0;
}
.bar {
margin: 0;
}
我以这种方式更新它:
.bar {
margin: 0;
}
.foo1 {
margin: 0;
color: green;
}
我应该看到两个不同的差异,具体取决于我使用的是哪种算法。
但对我来说这些命令的输出总是一样的
git diff --diff-algorithm=patience
git diff
diff --git a/foo.bar b/foo.bar
index 453dcb1..42cd4b4 100644
--- a/foo.bar
+++ b/foo.bar
@@ -1,7 +1,8 @@
-.foo1 {
+.bar {
margin: 0;
}
-.bar {
+.foo1 {
margin: 0;
+ color: green;
}
\ No newline at end of file
我正在使用 git 版本 2.14.2
最佳答案
我看到 --patience
在存在一串函数并且在中间添加一个新函数的情况下一直很有用。
int foo(void)
{
...
}
int baz(void)
{
...
}
如果在两者之间添加 int bar()
,差异通常如下所示:
+ }
+
+ int bar()
+ {
+ ...
这是正确的,但不符合直觉。
但是通过 --patience
你会得到预期的结果
+ int bar()
+ {
+ ...
+ }
+
除了增加一定程度的直观性外,它还增加了可预测性。如果您正在执行元差异(差异的差异),这将很有用:进行两组更改并比较它们以查看是否在两个地方都进行了相同的更改。如果一个 diff 以一种方式计算包围,而另一个以另一种方式计算包围,您将错误地确定您的两组更改不等效。但是,如果您告诉 git 使用 --patience
,您将获得一致格式的可预测性。 (这不是理论上的,而是通过痛苦的经验学到的。)
关于git - 任何使用 git merge 耐心策略的例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47146379/