是否可以仅将 "git show --name-status --oneline master" 减少到摘要行?

Is it possible to reduce "git show --name-status --oneline master" to the summary line only?

在以下输出中,我想排除以 "A" 或 "M" 开头的行。可能吗?

 $ git show --name-status --oneline master
    4e8f3e9 Added: f1.txt, f2.txt; modified: master_1.txt
    A       f1.txt
    A       f2.txt
    M       master_1.txt

使用“--summary”有帮助,但它仍然会留下 "extra" 内容:

$ git show --summary --oneline master
4e8f3e9 Added: f1.txt, f2.txt; modified: master_1.txt
 create mode 100644 f1.txt
 create mode 100644 f2.txt

这里让我觉得有趣的是,虽然指定了“--oneline”,但输出绝对不限于一行! :)

虽然可以处理输出,例如通过 "grep -v" 进行管道传输以获得所需结果(如下所示),但我正在寻找严格基于 [=25] 的解决方案=]选项。

您可以使用 grep -v 删除所有以 'A' 或 'M':

开头的行
git show --name-status --oneline master | grep -v '^[A,M]'

日志消息本身是一行,您还要求提供名称-状态行。

"Added: f1.txt, f2.txt; modified: master_1.txt" 只是(一行)文本 git 从提交消息中复制出来的。如果您不希望它显示已更改文件的名称和状态,请执行

git show -s --oneline master   # `-s` is short for `--no-patch`

因为显示提交的默认设置是区分补丁,除非你告诉它一些不同的东西。

我看到 git 文档并没有以最好的方式组织起来,以方便查找 -s 选项。 . .