我意外地在主人身上工作,我不得不开辟一个新的分支。
我几乎完全将它恢复到原来的状态。在一个课程中,我得到了以下差异,我无法理解。
index 4a9abb8..7c55879 100755
--- a/includes/site.inc.php
+++ b/includes/site.inc.php
@@ -142,11 +142,11 @@ class site{
public $tplEngine = 'smarty';
-
+
private $_productsByType = array();
private $logger;
- protected $locale = 'tr_TR';
-
+ protected $locale = 'tr_TR';
+
它说我已删除并添加了相同的内容,原则上与原始索引没有区别,我不希望将此文件视为已修改。
我该怎么办? THX。
答案 0 :(得分:35)
这可能是空白的变化。您可以运行git diff -w
,这将忽略任何空格更改。
答案 1 :(得分:8)
检查空格。被替换的“空”外观线条中有空格。您可能还意外地用空格替换了标签,反之亦然。
答案 2 :(得分:1)
检查空格或行结尾差异。
答案 3 :(得分:1)
非空行的第二个版本在分号后面有一个空格,空行也有不同的空格数。
应该有一个选项让git突出显示这样的隐藏空间,这样差异就会提供更多信息,但是我没有手动方便。
答案 4 :(得分:1)
除了空格/制表符,从不同的编辑器(甚至在Windows上)和/或不同的操作系统输入的行结尾可能会导致显示重复的差异线; LF(linux / Unix)vs CRLF(Windows)。
答案 5 :(得分:1)
使用
有时在命令行输出中不显示尾随空格git difftool
在通过git config --global diff.tool vimdiff
指定例如vimdiff作为您的difftool之后可能会有所帮助。
答案 6 :(得分:0)
请注意,如果您使用新的-B
选项,git 1.8.4 (July 2013)将不再显示只有空行的更改。
“
git diff
”学会了一种模式,它忽略了那些变化只包含空行的添加和删除的模式,这与GNU diff的“diff -B
”(忽略空白行)相同。 / p>
请参阅commit 36617af7ed594d1928554356d809bd611c642dd2:
补丁的目标是尽可能地引入GNU差异
-B/--ignore-blank-lines
。短选项不可用,因为它已用于“break-rewrites
”。使用此选项时,
git diff
不会创建简单地添加或删除空行的数据,但如果它们足够接近“有价值”的更改,仍会显示空行添加/抑制。这里是对该选项的更全面的描述:
- 真正的变化很有意思
- 足够接近(小于上下文大小)的空白行 有趣的变化被认为是有趣的(递归定义)
- “context”行用于每一段有趣的变化
- 如果两个帅哥之间的差距小于“大块间环境”,那么他们就是这样 将合并为一个。
答案 7 :(得分:0)
之所以有时会发生这种情况,是因为git使用的默认diff算法使用启发式方法来消除昂贵的边缘情况,这可能会导致结果不理想。
由于空白,行尾等原因,我遇到了一个无法解释的问题。git diff
显示的是删除并重新添加的特定行,作为大块的一部分显示为删除3行并添加2行,但实际上删除了2行并添加1行。其他diff程序显示预期删除了2行,增加了1行。
发生这种情况的文件为4736行(114 KB),差异总计为640个插入和1340个删除,相关的块位于文件的中间。我无法将它简化为出现相同问题的较小测试用例:在任何地方进行最小的扰动都会使问题消失。我唯一的结论是,我陷入了diff算法启发式算法的这些极端情况之一。
除默认设置外,Git还支持multiple other diff algorithms。通过将算法切换为minimal
,patience
或histogram
中的任何一个,在这种情况下,我的问题就解决了。
另请参见git源代码中的this comment,来自嵌入式LibXDiff库。