理解git log --stat输出

4

我正在尝试理解 git log --stat 命令的输出。

第一个输出:

commit 4c90aee323acc337a37040e02a0a3644f4155738

    Date:   Fri May 1 22:46:11 2015 -0400

        Submitting some changes in SingletonPattern example

     README                                  | 2 ++
     SingletonPattern/src/PrintSpooler.java  | 7 ++++++-
     SingletonPattern/src/SingleSpooler.java | 8 +++++---
     3 files changed, 13 insertions(+), 4 deletions(-)

以下是代码示例:

SingletonPattern/src/PrintSpooler.java  | 7 ++++++-

这意味着总共有7行发生了变化(6行新增,1行删除)。目前为止还不错。 现在是下一个输出结果:
commit f6e96c6df122b72ac9f70b841aa8938df1f6741b
    Date:   Sun Apr 26 02:08:15 2015 -0400

        First commit message

     SingletonPattern/.classpath                   |   6 +++++
     SingletonPattern/.project                     |  17 ++++++++++++++
     SingletonPattern/bin/PrintSpooler.class       | Bin 0 -> 772 bytes
     SingletonPattern/bin/SingleSpooler.class      | Bin 0 -> 895 bytes
     SingletonPattern/bin/SingletonException.class | Bin 0 -> 428 bytes
     SingletonPattern/src/PrintSpooler.java        |  27 ++++++++++++++++++++++
     SingletonPattern/src/SingleSpooler.java       |  31 ++++++++++++++++++++++++++
     SingletonPattern/src/SingletonException.java  |  20 +++++++++++++++++
     8 files changed, 101 insertions(+)

我不理解下面的代码片段:

SingletonPattern/src/SingletonException.java  |  20 +++++++++++++++++

显然,20后面有17个“+”。难道不应该是20+吗?

同样的情况也出现在这里:

SingletonPattern/.classpath                   |   6 +++++
2个回答

4
所有这些数字都不符合加号(或减号)的实际计数。这是因为没有足够的空间。当您使用--stat时,重要的是要查看哪些文件被修改以及它们发生了什么。您是否关心每一行添加了一个加号?可能并不是。相反,您想要看到的是一个文件相对于另一个文件的变化程度。这正是所显示的内容。文件旁边的加号是相对于彼此而言的。
|   6 +++++                            5 /  6 = 0.83
|  17 ++++++++++++++                  14 / 17 = 0.82
|  27 ++++++++++++++++++++++          22 / 27 = 0.81
|  31 ++++++++++++++++++++++++++      26 / 31 = 0.84
|  20 +++++++++++++++++               17 / 20 = 0.85

“实际文件更改数”与“加号数量”的比率大致相同,因此当您看到某个文件具有一定数量的加号时,另一个文件具有两倍的加号时,则可以知道该文件的添加次数是两倍。

您可以尝试使用--stat-graph-width=n选项来更改统计输出的宽度,以便在相同日志条目的不同大小下查看条形图的比例。


3
< p >加号(+)和减号(-)的数量并不一定是变化次数,更多的是两者之间的比例。否则,对于大的变化,你会看到无尽的加号或减号。

在您的特定示例中,文件SingleSpooler.java有约26个+的位置,其中包含31个更改,因此比例约为5:6。 因此,对于文件.classpath,添加了6行,您只会看到5个+(6 * 5/6),对于PrintSpooler.java,您将获得22个+(27 * 5/6),等等。


1
谢谢。很奇怪,我找不到一致性。对于一个7行更新的更改,它显示正常。但是,对于下一个6行更新,git不会执行。我希望可能有一个修复限制。即在50行之后,git只会显示x个+或-。 - gmohim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接