git - 任何使用 git merge 耐心策略的例子?

标签 git diff git-merge git-diff

我找不到任何真实的例子,其中 --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/

相关文章:

git - 如何在解决冲突的过程中提交长时间的 Git merge

github只能通过VPN访问

ruby - 是否有 ruby​​ gem 可以区分 HTML 文档?

Git 将一个分支 merge 到另一个分支是双向 merge 吗?

Git merge 不使用默认 merge 消息,使用默认消息打开编辑器

git - git merge --ff <commit> 和 git reset <commit> --mixed 有什么区别

每天的 Git 提交计数

ruby-on-rails - 不使用 git 将 Rails 应用程序部署到 Heroku?

linux - 比较二进制文件并仅打印匹配行的偏移量

git - 如何从当前版本和比最新版本更旧的版本之间的差异 View 编辑文件的当前版本?