每次运行git diff时,对于我所做的每一个更改,我都会得到一些带数字的标题,例如:
@@ -169,14 +167,12 @@ function Browser(window, document, body, XHR, $log) {.....
我想知道这四个数字是什么意思?我猜-169意味着后面的这段特殊代码最初是在第169行,但现在是167? 14和12是什么意思?
答案 0 :(得分:42)
此标头称为变更集或hunk。每个块都以一行开头,该行包含在@@中,文件中的行或行范围from,no-of-lines
(使用-
)和之后(使用+
)更改。之后来自文件的行。以-
开头的行将被删除,添加以+
开头的行。修补程序修改的每一行都包含前后3行上下文。
添加内容如下:
@@ -75,6 +103,8 @@
foo
bar
baz
+line1
+line2
more context
and more
and still context
这意味着,在第78行(= 75 + 3行上下文)之前的原始文件中添加两行。在所有变化之后,这些将是106行(= 103 + 3行上下文)到107
请注意from
数字的差异(-75 vs +103),这意味着此文件在此特定块之前还有其他更改,即添加了28(103 - 75)行代码。
删除如下所示:
@@ -75,7 +75,6 @@
foo
bar
baz
-line1
more context
and more
and still context
这意味着,删除原始文件中的第78行(= 75 + 3行上下文)。在所有更改后,未更改的上下文将在第75行到第80行
请注意,此块中的from
个数字相等(-75和+75),这意味着在此块之前没有更改,或者先前更改中添加和删除的行数量相同。
最后,更改如下所示:
@@ -70,7 +70,7 @@
foo
bar
baz
-red
+blue
more context
and more
still context
这意味着,在所有更改之前更改文件中的第73行(= 70 + 3行上下文),其中包含红色到蓝色。所有更改后,更改的行也是文件中的第73行(= 70 + 3行上下文)。
答案 1 :(得分:6)
我想知道这四个数字是什么意思?
让我们分析一个简单的例子
格式与DWASMod.dll
统一差异基本相同。
我们从1到16的数字开始,删除2,3,14和15:
diff -u
输出:
diff -u <(seq 16) <(seq 16 | grep -Ev '^(2|3|14|15)$')
@@ -1,6 +1,4 @@
1
-2
-3
4
5
6
@@ -11,6 +9,4 @@
11
12
13
-14
-15
16
表示:
@@ -1,6 +1,4 @@
:此作品对应第一个文件的第1行到第6行:
-1,6
1
2
3
4
5
6
表示&#34; old&#34;,因为我们通常将其作为-
调用。
diff -u old new
表示此部分对应于第二个文件的第1行到第4行。
+1,4
表示&#34; new&#34;。
我们只有4行代替6行,因为删除了2行!新的大块头只是:
+
1
4
5
6
类似:
,我们有6行,从旧文件的第11行开始:
@@ -11,6 +9,4 @@
在新文件中,我们有4行,从新文件的第9行开始:
11
12
13
14
15
16
请注意,行11
12
13
16
是新文件的第9行,因为我们已经删除了前一个块上的2行:2和3.
答案 2 :(得分:3)
要点:
git diff
将输出[0-3]上下文行[之前/之后] [第一个/最后一个]更改 @@ - [original file's number of first line displayed
],[context lines + removed lines
] + [changed file's number of first line displayed
],[context lines + added lines
] @@