Skip to main content
 首页 » 编程设计

diff之Git Diff header 上的数字有何含义

2024年05月29日10wayfarer

每次运行 git diff 时,对于我所做的每一个更改,我都会得到某种带有数字的标题,例如:

@@ -169,14 +167,12 @@ function Browser(window, document, body, XHR, $log) {..... 

我想知道这四个数字是什么意思?我猜 -169 意味着后面的这行特定代码最初位于第 169 行,但现在位于第 167 行? 14 和 12 是什么意思?

请您参考如下方法:

header 称为更改集或 block 。每个 block 都以一行开头,其中包含之前文件中的行或行范围 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 与 +103),这意味着在这个特定 block 之前此文件中还有其他更改,添加了 28 (103 - 75) 行代码。

删除看起来像这样:

@@ -75,7 +75,6 @@ 
 foo 
 bar 
 baz 
-line1 
 more context 
 and more 
 and still context 

这意味着,删除原始文件中的第 78 行(= 75 + 3 行上下文)。所有更改后,未更改的上下文将位于第 75 至 80 行。
请注意,该 block 中的 from 数字相等(-75 和 +75),这意味着该 block 之前没有任何更改,或者之前更改中添加和删除的行数相同。

最后,更改如下所示:

@@ -70,7 +70,7 @@ 
 foo 
 bar 
 baz 
-red 
+blue 
 more context 
 and more 
 still context 

这意味着,在所有更改之前更改文件中的第 73 行(= 70 + 3 行上下文),其中包含红色到蓝色。所有更改后,更改的行也是文件中的第 73 行(= 70 + 3 行上下文)。