如何在差异文件上获得 git 统计信息?
How to have git stats on a diff file?
在 git 存储库中时,我可以:
git log --oneline --stat
我会得到一个不错的输出,如下所示:
ca0ab77 commit message
a/file/changed | 19 -------------------
1 file changed, 19 deletions(-)
就我而言,我在 git 存储库之外工作,我只有 .diff(git diff <commit-ish>
的输出)文件,我希望有相同的统计信息(文件已更改, 增加, 删除).
有工具吗?或者我应该写一个正则表达式?
带有 +/- 符号和“1 个文件已更改,...”的直方图称为 diffstat。 diffstat
工具 (man page) 可以生成这些,如果你输入你的 diff:
$ diffstat -p1 my-patch.diff
src/some_file.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
如果您只想要最后一行,请使用 -s
:
$ diffstat -s my-patch.diff
1 file changed, 2 insertions(+), 2 deletions(-)
使用 -p1
可能是一个好主意,如果你正在喂它 git 具有 a/b 前缀的差异。如果您不使用 -p
,diffstat 会从文件名中去除常见的前缀。有时这会给您带来意想不到的结果(特别是如果您的补丁通过与 /dev/null
比较来添加或删除文件)。
如果您使用 -C
选项,Diffstat 还可以为您提供彩色直方图。
在 git 存储库中时,我可以:
git log --oneline --stat
我会得到一个不错的输出,如下所示:
ca0ab77 commit message
a/file/changed | 19 -------------------
1 file changed, 19 deletions(-)
就我而言,我在 git 存储库之外工作,我只有 .diff(git diff <commit-ish>
的输出)文件,我希望有相同的统计信息(文件已更改, 增加, 删除).
有工具吗?或者我应该写一个正则表达式?
带有 +/- 符号和“1 个文件已更改,...”的直方图称为 diffstat。 diffstat
工具 (man page) 可以生成这些,如果你输入你的 diff:
$ diffstat -p1 my-patch.diff
src/some_file.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
如果您只想要最后一行,请使用 -s
:
$ diffstat -s my-patch.diff
1 file changed, 2 insertions(+), 2 deletions(-)
使用 -p1
可能是一个好主意,如果你正在喂它 git 具有 a/b 前缀的差异。如果您不使用 -p
,diffstat 会从文件名中去除常见的前缀。有时这会给您带来意想不到的结果(特别是如果您的补丁通过与 /dev/null
比较来添加或删除文件)。
如果您使用 -C
选项,Diffstat 还可以为您提供彩色直方图。