git diff --stat
和git log --stat
显示如下输出:
$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07
app/controllers/application_controller.rb | 34 +++-------------------------
1 files changed, 4 insertions(+), 30 deletions(-)
但在该提交中实际发生的是4行被更改,26行被删除,这与添加4行和删除30行不同。
有没有办法得到增量LOC(在这个例子中是26)?我真的不关心添加或删除的行之间的区别。
5条答案
按热度按时间mbzjlibv1#
您可以用途:
以获得数字DIFF信息。
至于将修改与添加和删除对分开,
--word-diff
可能会有所帮助。它有点冗长,所以您可能希望在自己的脚本中解析它。
unftdfkk2#
1.如果你想知道由id为
commit-id
的提交添加/更改/删除的行,你可以使用或
1.如果你想知道由一系列提交添加/更改/删除的行,你可以使用
1.如果您想知道每次提交添加/更改/删除的行,可以使用
mqxuamgl3#
您可以使用
diffstat
来显示已修改的行数。例如:-C
选项用于获得彩色输出;-m
选项用于显示修改的行数。示例输出:请注意,每个类别(插入、删除、修改)中的行数只是近似值,如
man diffstat
所示:-m合并修补程序文件的每个“块”中的插入/删除计数,以近似修改的行数。
与
git diff --stat
相比,diffstat
缺少一个功能:diffstat
无法显示文件移动/重命名(例如app/{a.rb => b.rb}
),而git diff --stat
可以通过使用-M
(--find-renames
)选项或在git配置文件中设置diff.renames
来显示此信息(请参阅man git-config
)。rhfm7lfc4#
如果您的所有文件都已暂存以供提交,则
--numstat
将显示如下:示例性输出
--numstat
[...]显示添加和删除的行数qni6mghb5#
git使用“unifieddiff”作为diff格式,它只显示添加和删除的行,你必须做一些外部的操作来得到一个显示添加、删除和更改信息的diff。
https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git 提供了一个脚本链接,该脚本允许运行常规的“diff”--从该脚本中,您可以生成一个“context”diff输出。Context diff确实显示了添加、删除和更改的行,这应该允许您获得所需的数据。