什么是源线和& git blame中的结果 - 增加输出?

时间:2018-03-19 19:13:31

标签: git

来自git blame docs

  

使用--incremental选项调用时,该命令输出结果   因为它是建立的。输出通常会谈到触及的线   最近的提交(即行将注释掉)   并且意图由交互式观众使用。

     

输出格式类似于Porcelain格式,但它没有   包含正在注释的文件中的实际行。

     

每个责备条目始终以以下行开头:

     

<40-byte hex sha1> <sourceline> <resultline> <num_lines>

     

行号从1开始计算。

我认为同一模式用于docs says

--porcelain格式
  

在这种格式中,每一行都在标题之后输出;在标题处   最小的第一行有:

     
      
  • 该行归属的提交的40字节SHA-1;

  •   
  • 原始文件中该行的行号;

  •   
  • 最终文件中该行的行号;

         

    [...]

  •   

但每次我使用这些选项中的任何一个运行git blame时,sourceline(原始行)和resultline(最后一行)都是相同的。我可以在git diff中理解这些输出,但它在git blame中意味着什么?如何在sourcelineresultline不同的情况下生成输出?

1 个答案:

答案 0 :(得分:1)

答案是如此明显,这是相当愚蠢的我没注意到它。

  • sourceline 是代码提交的行号。
  • 结果行是代码现在的行号。

示例:

首次提交 index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

</body>
</html>

第二次提交 index.html (添加了4个新行):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>
        <p>
            Hello World!
        </p>
    </div>
</body>
</html>

然后git blame --incremental index.html的输出将如下所示:

f0a2d579be45dc1283672b4750bdc1923a9f7b2d 10 10 5
...
summary Hello World
previous ce3f4934051212a78c2fed853a113e2223428809 index.html
filename index.html
ce3f4934051212a78c2fed853a113e2223428809 1 1 9
...
summary initial commit
boundary
filename index.html
ce3f4934051212a78c2fed853a113e2223428809 11 15 2
filename index.html

请注意,输出指定第11行和第11行 的2行。 12当他们被提交时(</body>&amp; </html>)现在已经在第15行&amp; 16。

这对--porcelain输出的工作方式相同。

我想在提出问题之前我没有对此进行过足够的测试,必须只测试代码已经附加到文件末尾的文件。