2010-07-28 109 views
136

我需要一個管道命令來打印一個給定提交的提交消息 - 沒有什麼比這更重要的了。在git中輸出給定提交的提交消息

+1

如果有人來這裏尋找一種方式來打印單行提交信息,但不關心關於出現在開頭的哈希,下面的工作:'git show -s --oneline ' – waldyrious 2017-01-13 12:34:16

+0

我們應該在哪裏添加行來在服務器機器中打印提交消息?我的意思是哪個鉤子文件? – 2017-08-30 12:17:14

回答

182

這不是「管道」,但它會做的正是你想要的東西:

$ git log --format=%B -n 1 <commit> 

如果你絕對需要一個「管道」命令(不知道爲什麼,這是一個要求),可以使用rev-list

$ git rev-list --format=%B --max-count=1 <commit> 

儘管rev-list也會在提交消息的基礎上打印出commit sha(第一行)。

+4

完全適合我 - 但我使用'%s%b'代替'%B'(在Linux上) – adamk 2010-07-28 20:56:53

+15

'%B'是一個正確的說明符(至少在Git 1.7.2中,不知道它在什麼時候加入)。 – mipadi 2010-07-28 20:57:34

+2

「%B」是在1.7.1之後的某個時間添加的(可能在1.7.1.1中)。 – mipadi 2010-07-28 21:03:46

8

不是管道,但我有這些在我的.gitconfig:

lsum = log -n 1 --pretty=format:'%s' 
lmsg = log -n 1 --pretty=format:'%s%n%n%b' 

這是「最後總結」和「最後的消息」。您可以提交一個提交來獲取該提交的摘要或消息。 (我使用的是1.7.0.5,所以沒有%B)

10

這會給你一個非常緊湊的任何指定時間的消息列表。

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT 
79

git show超過git log一個管道命令,並具有相同的格式選項:

git show -s --format=%B SHA1 
+9

如果您只想要第一行(「subject」),請使用' %s'而不是'%B'。 – ntc2 2014-09-25 17:00:03

+8

(我更喜歡這個接受的「log」或「rev-list」答案,因爲它是一個單提交操作,而不是限於1個條目的列表。) – Rich 2015-10-26 10:58:42