如何用 git log pretty 格式抑制空行?
How to suppress blank lines with git log pretty format?
我正在尝试扩展 git log --oneline
格式以显示更多信息,特别是提交者和提交时间。
原来的命令是git log --oneline --name-status
并产生这个输出:
[master] ~/temp/tempgit$ 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)'
它产生这个输出:
[master] ~/temp/tempgit$ 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'
谢谢!
您可以将您的命令传送到:
sed '/^\s*$/d'
git log --oneline --name-status --pretty='format:%C(yellow)%h %C(auto)%d %s %C(red)(%cn, %cr)' | sed '/^\s*$/d'
但这将不允许您像往常一样向下滚动。
解决方法是select所需的提交次数:
-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'
我还发现 sed '/^$/d' 也能正常工作。参见 tldp
我正在尝试扩展 git log --oneline
格式以显示更多信息,特别是提交者和提交时间。
原来的命令是git log --oneline --name-status
并产生这个输出:
[master] ~/temp/tempgit$ 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)'
它产生这个输出:
[master] ~/temp/tempgit$ 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'
谢谢!
您可以将您的命令传送到:
sed '/^\s*$/d'
git log --oneline --name-status --pretty='format:%C(yellow)%h %C(auto)%d %s %C(red)(%cn, %cr)' | sed '/^\s*$/d'
但这将不允许您像往常一样向下滚动。
解决方法是select所需的提交次数:
-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'
我还发现 sed '/^$/d' 也能正常工作。参见 tldp