2012-08-06 58 views
2

我想在項目中使用git log來查看提交消息中只有多行的提交(即它們有更長的描述)。什麼是最好的方式去做這件事?如何使用多行查找git日誌消息?

我試過git log --grep='\n\n',它想出了a提交的列表不止一行,但它不是一個完整的列表。 (我手動完成了一些完整的日誌,並很快發現我的命令沒有輸出多行消息的提交。)

然後我也嘗試了git log --grep='\n\r\?\n',以防在某些情況下Windows風格的行結尾提交(我使用msysgit,所以它可能?),但它產生了與上述相同的輸出。

回答

2

這似乎爲我工作(在Linux上):

git log --pretty=format:'%H<msgst>%b<msge>' \ 
| fgrep -v '<msgst><msge>' | fgrep '<msgst>' | cut -b1-40 \ 
| git log --stdin --no-walk 

基本上是:打印提交哈希和提交郵件正文(減去主題行)包裹在一些不常見的字符串,排除線路,其中這樣的機構是空的(例如,在消息中提交沒有換行符),然後取第一行(開頭提交散列的行),並僅打印散列。

+0

爲什麼'fgrep'而不是普通的'grep'? – vergenzt 2012-08-06 14:12:43

+0

@vergenzt:'fgrep'是'grep -F'的別名,它只是搜索純字符串。我使用它,因爲我懶得想在特定的正則表達式變體grep中使用'<是否特殊。當然,你可以使用你希望的任何grep,只要你調整它來捕捉你的分隔符。 – che 2012-08-06 17:24:12

+0

哦,gotcha。我曾在'-f'文件中查看過使用模式文件的文檔,但我很困惑......''-F'很合理。 – vergenzt 2012-08-06 17:59:37