簡體   English   中英

git 日志 - 僅顯示提交消息的前 x 個字符

[英]git log - display only the first x characters of commit's message

我只想在git log中顯示提交消息的有限數量的字符(比如前 100 個字符)

目前,我使用git log --oneline但這會顯示消息的第一行。 如果消息中的行與行之間沒有換行符,那么這行可能會很長。 這使我的 git 日志變得丑陋且不易閱讀。

我怎樣才能做到這一點?

如果這不能顯示有限數量的字符,我可以顯示消息的真正第一行嗎?我的意思是如果它和消息中的第二行之間沒有分隔符?

我只想在 git 日志中顯示提交消息的有限數量的字符(比如前 100 個字符)

查看可用於--format占位符 你對%<(100)感興趣——它將長行剪切到給定的字符數; 不幸的是,它會在給定數量的字符的右側填充短線,但這是你能找到的最好的。 所以你需要

git log --format='%h %<(100)%s'

我可以顯示消息的真正第一行嗎,我的意思是如果它和消息中的第二行之間沒有中斷?

不, %s占位符不是第一行,而是第一段,由兩個換行符分隔。 下次請使用如何編寫好的提交消息的最佳實踐:

https://chris.beams.io/posts/git-commit/#separate

您可以 go 使用%B進行更復雜的處理並從中剪切第一行。 像這樣的東西:

git rev-parse master |
    while read sha1; do
        first_line=$(git --no-pager show -s --format='%B' | head -1)
        echo "$sha1 $first_line"
    done

在 macOS Monterey 版本 12.2.1 上使用 git 版本 2.32.0 (Apple Git-132),我發現為了實際切割到給定的字符數,我必須明確要求它截斷 output。

像這樣:

git log --format='%h %<(100,trunc)%s'

來自https://git-scm.com/docs/git-log#Documentation/git-log.txt-emltltNgttruncltruncmtruncem

%<(<N>[,trunc|ltrunc|mtrunc])

使下一個占位符至少占用 N 列,必要時在右側填充空格。 如果 output 長於 N 列,可選擇在開頭 (ltrunc)、中間 (mtrunc) 或結尾 (trunc) 截斷。 請注意,截斷僅適用於 N >= 2。

PS:我會把它作為現有答案的評論或編輯,但我沒有足夠的評論代表並且它說編輯隊列已滿。 無論如何,想補充 phd 所說的內容。

暫無
暫無

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

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