如何通过git计算更改的行?

时间:2018-10-25 16:22:31

标签: git github logging

使用git log - -stat时,可以得到“文件更改,添加和删除”的信息。但是,我想计算更改了多少行。例如:

git log --stat
-  Print “hello world”;
-  int a;
-  int b;
-  String name;
-  print "a"
+  Print “Hello, World!”
1 file changed, 1 addition, 5 deletions.

这里是1个修改过的地方,但是Git告诉我,这里有1个添加项和5个删除项。我想得到:

git log --stat
-  Print “hello world”;
-  int a;
-  int b;
-  String name;
-  print "a"
+  Print “Hello, World!”
1 file changed, 0 addition, 4 deletions, 1 modify

如何使用Git自动计算修改的行数?

我尝试了git log -p,它显示为:

git log -p
-  Print “hello world”;
-  int a;
-  int b;
-  String name;
-  print "a"
+  Print “Hello, World!”

因此,我需要一个一个地检查它。 git有计算变更行数的方法吗?

1 个答案:

答案 0 :(得分:0)

就Git的内部差异算法而言,没有任何行更改。它在那里,或者不在那里。如果它不存在且之前存在,则将其删除。如果以前不存在,现在已经插入了。如果它曾经存在并且仍然存在,则保持不变。

还有其他算法和Git diff输出的后处理器,它们将尝试在已删除/添加的部分中查找“相似”行,并将其显示为行中的更改。但是Git本身根本不这样做。

(原因是为了提高性能,Git将每行视为一个符号。该符号本身可能会忽略空格或进行其他一些特殊处理。您还可以让Git将每个“单词”都视为一个符号,因此它一次比较一个单词并产生逐个单词的差异,所有这些都馈入到Git内部的四个差异引擎之一中。有关此内容的更多信息,请参见未完成的{{3} }。