每次运行git diff时,对于我所做的每一个更改,我都会得到某种带数字的标题,例如:
@@ -169,14 +167,12 @@ function Browser(window, document, body, XHR, $log) {.....
Run Code Online (Sandbox Code Playgroud)
我想知道这四个数字是什么意思?我猜-169意味着后面的这段特殊代码最初是在第169行,但现在是167?14和12是什么意思?
And*_*ovs 46
此标头称为变更集或块.每个块都以一行开头,该行包含在@@中,包含from,no-of-lines文件中的行或行范围(带有a -)和after(带有a +)更改.之后来自文件的行.以a开头的行-被删除,以a开头的行+被添加.由补丁修改的每一行被前后三行上下文包围.
添加如下:
@@ -75,6 +103,8 @@
foo
bar
baz
+line1
+line2
more context
and more
and still context
Run Code Online (Sandbox Code Playgroud)
这意味着,在第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
Run Code Online (Sandbox Code Playgroud)
这意味着,删除原始文件中的第78行(= 75 + 3行上下文).所有更改后,未更改的上下文将在第75行到第80行.
请注意,from此块中的数字相等(-75和+75),这意味着在此块之前没有更改,或者先前更改中添加和删除的行数量相同.
最后,更改看起来像这样:
@@ -70,7 +70,7 @@
foo
bar
baz
-red
+blue
more context
and more
still context
Run Code Online (Sandbox Code Playgroud)
这意味着,在所有更改之前更改文件中的第73行(= 70 + 3行上下文),其中包含红色到蓝色.所有更改后,更改的行也是文件中的第73行(= 70 + 3行上下文).
我想知道这四个数字是什么意思?
让我们分析一个简单的例子
diff -u统一差异的格式基本相同.
我们从1到16的数字开始,删除2,3,14和15:
diff -u <(seq 16) <(seq 16 | grep -Ev '^(2|3|14|15)$')
Run Code Online (Sandbox Code Playgroud)
输出:
@@ -1,6 +1,4 @@
1
-2
-3
4
5
6
@@ -11,6 +9,4 @@
11
12
13
-14
-15
16
Run Code Online (Sandbox Code Playgroud)
@@ -1,6 +1,4 @@ 手段:
-1,6:此部分对应于第一个文件的第1行到第6行:
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
-意思是"旧",因为我们通常称之为diff -u old new.
+1,4 说这件作品对应第二档的第1到第4行.
+ 意思是"新".
我们只有4行代替6行,因为删除了2行!新的大块头只是:
1
4
5
6
Run Code Online (Sandbox Code Playgroud)@@ -11,6 +9,4 @@ 对于第二个大块是类似的:
在旧文件中,我们有6行,从旧文件的第11行开始:
11
12
13
14
15
16
Run Code Online (Sandbox Code Playgroud)在新文件中,我们有4行,从新文件的第9行开始:
11
12
13
16
Run Code Online (Sandbox Code Playgroud)
请注意,该行11是新文件的第9行,因为我们已经删除了前一个块上的2行: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] @@