Bash 如何让git显示——只列出更改、插入和删除的文件数?

Bash 如何让git显示——只列出更改、插入和删除的文件数?,bash,git,shell,terminal,Bash,Git,Shell,Terminal,我使用以下Git命令获取有关特定提交的数据: git show <revhash> --stat >> ouput.csv 我知道我可以使用--shortstat,但它仍然提供其他信息,如提交哈希、日期e.t.c 我认为git中不可能有这样的东西,但是解析最后一行的输出的最聪明的方法是什么呢?使用tail切断最后一行之外的所有内容: git show <commit> --shortstat | tail -n1 git show--shortstat

我使用以下Git命令获取有关特定提交的数据:

  git show <revhash> --stat >> ouput.csv
我知道我可以使用
--shortstat
,但它仍然提供其他信息,如提交哈希、日期e.t.c


我认为git中不可能有这样的东西,但是解析最后一行的输出的最聪明的方法是什么呢?

使用
tail
切断最后一行之外的所有内容:

git show <commit> --shortstat | tail -n1
git show--shortstat | tail-n1
我会使用
--格式

git show <commit> --shortstat --format="" >>output.csv
git show--shortstat--format=”“>>output.csv

^
后缀基本上是说“将

的父项进行比较,这样做是有效的,但这是因为
git diff中有一种缺陷
^!
在gitrevisions中被描述为
与提交相同,然后它的所有父项都加上前缀^,以排除它们(及其祖先).
git diff的内部代码使用
B^A
^A B
来表示
git diff A B
。但是,当它遇到合并时,它会得到
git diff^A^B^C D
,而您在这里得到的是
^A D
。无论如何,结果是:这是有效的,即使对于合并,但您可能希望通过编写更加明确
git diff^
或类似内容,请注意,您正在将提交的第一个父级与提交进行比较。如果提交是一个合并(具有N>1个父级)您明确忽略了除第一个之外的所有内容。
git diff
命令可能会在某一天发出警告或出现错误,或者尝试使用组合的diff而不是常规的diff,或者类似的方法。这也可以工作,但不会为合并提交生成任何输出。添加
-m
,它会为每个父级生成一个diff short stat,这可能是正确的,也可能不是正确的向往的
git show <commit> --shortstat | tail -n1
git show <commit> --shortstat --format="" >>output.csv
git diff --shortstat HEAD^!