簡體   English   中英

如何使用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'

但這不允許您像往常一樣向下滾動。

一種解決方法是選擇所需的提交數量:

-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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM