5

对于提交的所有文件,我希望状态修饰符--name-status提供,以及添加和删除行的数量--numstat。说我有以下内容:

> git log --pretty=format:"%aN %ct" --reverse --name-status --encoding=UTF-8 --no-renames
John Doe 1234567489
M       foo/bar/foo.bar
A       bar/hello.txt

和:

> git log --pretty=format: --reverse --numstat --encoding=UTF-8 --no-renames
9      5       foo/bar/foo.bar
21     0       bar/hello.txt

是否有一个单一的命令/标志组合可以为我提供它们组合的输出?类似这样的东西:

John Doe 1234567489
M    9    5       foo/bar/foo.bar
A    21   0       bar/hello.txt

我知道可以将它们与一些awk魔法结合起来,但是鉴于我将在多个大型存储库和性能问题上执行此操作,因此最好使用单个 git log 命令。

4

1 回答 1

1

由于 --name-status 似乎覆盖了任何其他标志(它类似于 --name-only),您可以使用 --summary 和 --numstats 的组合。但是,它不会像您描述的那样在同一行。

git log --pretty=format:"%aN %ct" --reverse --summary --numstat --encoding=UTF-8 --no-renames

会产生类似的东西:

Christopher Corley 1363309327
4929    0       IEEEtran.cls
22      46      paper.tex
 create mode 100644 IEEEtran.cls

请注意,这仅列出模式更改的摘要。对于未更改模式的修改文件(即“M”),它们不会出现在摘要列表中。

同样,您可能会发现使用 --raw 而不是 --summary 会很有用,后者会列出修改过的文件:

Christopher Corley 1363309327
:000000 100644 0000000... 5e2d183... A  IEEEtran.cls
:100644 100644 2abed5a... 91f133d... M  paper.tex
4929    0       IEEEtran.cls
22      46      paper.tex
于 2013-03-20T11:28:19.487 回答