diff 输出中“@@”行中的数字意味着什么?

diff 输出中“@@”行中的数字意味着什么?

以下是 Unix Shell 程序的示例diff,来自 Version Control with Git,作者:Loeliger,2ed:

在此输入图像描述

让我们详细看看差异。

在标头中,原始文件用 - - - 表示,新文件用 +++ 表示。

@@ 行提供两个文件版本的行号上下文。

“@@”行中的数字到底是什么意思?

答案1

它们是旧/新文件的行号,以帮助patch(或类似)程序解码统一差异。

  • 逗号后面的数字是块的长度(在旧文件或新文件中),并且
  • 逗号前的数字是块开始的行号。
  • +和符号-分别表示添加和删除行。

在您的示例中,该行

@@ -1,4 +1,5 @@

使用-+符号作为类比中使用的<和符号>正常差异左/右文件的输出。这两种格式都试图交错差异线。 (上下文差异显示前后块,而不是交错)。

Unified diff是程序的一种特殊格式diff;其他广泛支持的格式在差异输出格式部分。

进一步阅读:

答案2

GNUdiff文档在有关的部分中解释了这一点统一格式:

接下来是一个或多个差异;每个块都显示文件不同的一个区域。统一格式的帅哥看起来像这样:

 @@ from-file-line-numbers to-file-line-numbers @@
  line-from-either-file
  line-from-either-file...

如果块仅包含一行,则仅显示其起始行号。否则它的行号看起来像“开始,计数”。空块被认为是从块后面的线开始。

如果一个块及其上下文包含两行或更多行,则其行号看起来像“start,count”。否则仅显示其结束行号。空块被认为在该块之前的行处结束。

两个文件共有的行以空格字符开头。两个文件之间实际不同的行在左侧打印列中具有以下指示符之一:

‘+’
   A line was added here to the first file. 
‘-’
   A line was removed here from the first file.

相关内容