Git diff错误地解释了我的更改

Vit*_*sky 3 git commit

尝试比较具有相同结构的块时,通常会在html / css中出现问题。示例: 初始提交

现在让我们向“ someblock”和新类“ someotherblock”添加新参数。 结果

预期结果:

 1  1 .someblock
 2  2    height:100%;
    3+   width:100%;
 3  4 }
    5+.someotherblock{
    6+   height:100%;
    7+}  
Run Code Online (Sandbox Code Playgroud)

有什么办法可以使git无法理解更改的“逻辑”?

tor*_*rek 5

要认识到Git不会是很重要的,真的可以不,你看究竟你做了什么。(也许你加括号,然后再添加内容,顺序,在这种情况下,向您展示一下这不得不说“先加两个大括号,然后在中间添加内容”。)相反,Git的根本产生至少组告诉计算机的指令如何将“以前存在的内容”更改为“现在应该存在的内容”。

Git程序员试图使“计算机易于理解”的指令对人类也有些敏感,但是对此的答案是:

有什么方法可以使git理解更改的“逻辑”?

没有”。

耐心的差异(请参阅吉拉的答案)可以在某些情况下提供帮助,尤其是那些Git在仅由开括号或闭括号等组成的行上进行同步的情况。

Git 2.9添加了所谓的“压缩启发式”(在此稍作介绍),但是它需要在更改区域上方留空行。这句话,“上面的一个空行”,是指一个空行,和以上:压实启发式不相信一个文件就足够顶(虽然在我看来,这应该相信这一点)。压缩启发式方法产生了更大的变化,尽管对我而言,扭曲源以使VCS更好地显示差异的想法至少令人讨厌。


1 “最小”,指的是尽可能少的“删除X”和“添加Y”指令。尽管Git确实具有面向字的diff,但Git并未考虑通常为线的X和Y的长度。领带— Git可以说“在此处删除四行,然后在此处添加四行”,然后上下移动四行,由于使用了算法,因此被打破,改为“最远向下”,这就是为什么压缩启发式仅尝试转移


Wil*_*ard 5

git diff --histogram这就是您正在寻找的。它将以更易于理解的方式显示这样的更改。它解决了 git diff 显示括号(大括号)“错误”的问题。

请参阅“git diff --patience”和“git diff --histogram”有什么区别?