【问题标题】:How to make git show --stat listing only the number of files changed, insertions and deletions?如何让 git show --stat 仅列出更改、插入和删除的文件数?
【发布时间】:2019-05-02 22:51:02
【问题描述】:

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

  git show <revhash> --stat >> ouput.csv

这是我得到的输出:

  commit 7bc745a289cf68cb2eba647bbfba9e9ec06eb771
  Author: Stefan Bodewig <bodewig@apache.org>
  Date:   Mon Jun 24 15:12:57 2013 +0000

post-process generated javadocs as workaround for CVE-2013-1571 - based on Maven patch by Uwe Schindler - PR 55132

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1496083 13f79535-47bb-0310-9956-ffa450edef68

   CONTRIBUTORS                                       |   1 +
   WHATSNEW                                           |   9 ++
   contributors.xml                                   |   4 +
   manual/Tasks/javadoc.html                          |  12 +++
   .../org/apache/tools/ant/taskdefs/Javadoc.java     | 111 ++++++++++++++++++++-
   .../ant/taskdefs/javadoc-frame-injections-fix.txt  |  37 +++++++
   6 files changed, 171 insertions(+), 3 deletions(-)

我想通过以下方式在没有其他元数据的情况下获取像这样更改的文件列表:

  1 file changed, 1 insertion(+), 1 deletion(-)

我知道我可以使用--shortstat,但它仍然提供其他信息,例如提交哈希、日期等

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

【问题讨论】:

标签: bash git shell terminal


【解决方案1】:

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

git show <commit> --shortstat | tail -n1

【讨论】:

    【解决方案2】:

    我会使用--format

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

    【讨论】:

    • also 有效,但对于合并提交根本不产生任何输出。添加-m,它会为每个父母生成一个差异短统计数据,这可能是可取的,也可能不是。
    【解决方案3】:
    git diff --shortstat HEAD^!
    

    ^! 后缀基本上表示“将 HEADHEAD 的父级进行比较

    【讨论】:

    • 这确实有效,但这是因为git diff 中的某种错误。 &lt;rev&gt;^! 在 gitrevisions 中被描述为 the same as giving commit &lt;rev&gt; and then all its parents prefixed with ^ to exclude them (and their ancestors). git diff 的内部代码使用 B ^A^A B 来表示 git diff A B。但是,当它发生合并时,它会得到git diff ^A ^B ^C D,而你会在这里得到^A D
    • 无论如何,结果是:即使对于合并,这也有效,但您可能希望通过编写git diff &lt;rev&gt;^ &lt;rev&gt; 或类似内容更明确,以注意您正在比较提交的第一个父项,提交。如果提交是合并(与 N>1 父级),则您明确忽略除第一个之外的所有内容。 git diff 命令有一天可能会针对这种情况发出警告或错误,或者尝试组合差异而不是常规差异,或类似的。
    猜你喜欢
    • 2023-01-05
    • 2017-08-13
    • 1970-01-01
    • 2012-04-13
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多