来自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中意味着什么?如何在sourceline
和resultline
不同的情况下生成输出?
答案 0 :(得分:1)
答案是如此明显,这是相当愚蠢的我没注意到它。
示例:
首次提交 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
输出的工作方式相同。
我想在提出问题之前我没有对此进行过足够的测试,必须只测试代码已经附加到文件末尾的文件。