我如何让git log在一行上打印每个提交的完整哈希和简短统计信息?

w8biq8rn  于 2023-04-19  发布在  Git
关注(0)|答案(2)|浏览(138)

我想用git命令行得到这样的输出:

bcfd649de8850e3bfc9584eb12be8fe136ca6985 3 files changed, 8 insertions(+), 1 deletion(-)

我目前使用的是git log --shortstat --reverse --pretty=oneline,但它实际上不是一行,注解对我来说毫无用处:

bcfd649de8850e3bfc9584eb12be8fe136ca6985 Added ActionController#cookies[] as a reader for @cookies that'll return the value of the cookie instead of 
3 files changed, 8 insertions(+), 1 deletions(-)

有什么办法吗?

t9aqgxwy

t9aqgxwy1#

您可以定义自己的格式,只包含完整的散列,并将git log的输出通过管道传输到awkedit:或者sed,正如jthill在他的评论中所建议的那样),以便在需要的地方用空格替换换行符(参见this):

git log --pretty=tformat:"%H" --shortstat | awk 'ORS=NR%3?" ":"\n"'

git log --pretty=tformat:"%H" --shortstat | sed 'N;N;y/\n/ /'

测试

$ git log --pretty=tformat:"%H" --shortstat | awk 'ORS=NR%3?" ":"\n"'
4da27ca5dc8469f19b1524a5dd381aad76f96c69   4 files changed, 26 insertions(+)
60c1e011aadc1bdbf38dde989d0f0497925678d9   4 files changed, 34 insertions(+)
f0e6da70616337f135190dc7f68e22678a7af2ff   4 files changed, 34 insertions(+)
95ea8a002f66a249946a78deb362a2e697dfb80a   4 files changed, 44 insertions(+)
9854efba2301d520bc4fe1a102e102f299ae127d   1 file changed, 2 insertions(+), 2 deletions(-)
c8ee6b36a545c67b2443eea499bf046dd1e2233d   4 files changed, 29 insertions(+)
2d4374edd2d2820f05853b4add9fc5ddba1506ac   4 files changed, 42 insertions(+)
$
balp4ylt

balp4ylt2#

对于任何登陆这里寻求“如何获得git log one line full commit hash”的答案的人来说,正如我所做的那样,这里有一个git log的标志,它打印非缩写的提交哈希。
它被称为--no-v-commit。文档如下:
显示完整的40字节十六进制提交对象名称。这将否定--v-commit,无论是显式的还是其他选项(如“--oneline”)所暗示的。它还将覆盖log. vCommit变量。

**TL;DR:**下面是一行完整提交哈希的输出命令:

git log --oneline --no-abbrev-commit

**注意:**一位匿名用户提出,由于--oneline使--no-abbrev-commit标志对git命令有意义,因此上述标志的顺序很重要。

相关问题