如何使用 git log Pretty 格式抑制空白行?

问题描述 投票:0回答:2

我正在尝试扩展

git log --oneline
格式以显示更多信息,特别是提交者和提交时间。

原来的命令是

git log --oneline --name-status
并产生以下输出:

$ git log --oneline --name-status
809d815 (HEAD -> master) modified bar
M       bar.txt
352d6d3 modified foo
M       foo.txt
e4150f4 initial commit
A       bar.txt
A       baz.txt
A       foo.txt

我已复制此格式并添加附加信息,如下所示

git log --oneline --name-status --pretty='format:%C(yellow)%h %C(auto)%d %s %C(red)(%cn, %cr)'
它产生这个输出:

$ git log --oneline --name-status --pretty='format:%C(yellow)%h %C(auto)%d %s %C(red)(%cn, %cr)'
809d815 (HEAD -> master) modified bar (Mike Harvey, 29 seconds ago)
M       bar.txt

352d6d3 modified foo (Mike Harvey, 49 seconds ago)
M       foo.txt

e4150f4 initial commit (Mike Harvey, 2 minutes ago)
A       bar.txt
A       baz.txt
A       foo.txt

我想要做的是抑制日志条目之间的空行,但找不到删除它的选项,也找不到插入它的原因。这里唯一的区别是我使用了漂亮的格式。

更新:似乎没有解决方法,所以我改编了 Kjele 的解决方案。通过管道传输输出会丢失我真正想要的颜色信息,因此我用

-c color.ui=always
强制它。

这是实现我想要的最终版本:

git log ${REV}..HEAD --oneline --name-status -c color.ui=always --pretty='format:%C(yellow)%h %C(auto)%d %s %C(red)(%cn, %cr)' | sed '/^\s*$/d'

git git-log
2个回答
2
投票

您可以将命令通过管道传输到:

sed '/^\s*$/d'

git log --oneline --name-status --pretty='format:%C(yellow)%h %C(auto)%d %s %C(red)(%cn, %cr)' |  sed '/^\s*$/d'

但这不会让您像平常一样向下滚动。

解决方法可能是选择所需的提交数量:

-n 10

git log --oneline --name-status --pretty='format:%C(yellow)%h %C(auto)%d %s %C(red)(%cn, %cr)' -n 10 |  sed '/^\s*$/d'

0
投票

我还发现 sed '/^$/d' 也有效。 请参阅tldp

© www.soinside.com 2019 - 2024. All rights reserved.