2012-11-03 70 views
2

您可以使用--pretty自定義git log的輸出,並且可以使用--numstat顯示添加和刪除行的數量。它看起來像這樣:可解析的git日誌輸出

$ git log --pretty=format:"%h - %ar : %s" --numstat config*.ini 

f665c63 - 6 months ago : fixes session end post 
1  1  config.ini 

4541de2 - 7 months ago : fixes missing strings 
6  1  config.ini 
3  1  config_office.ini 

但我要的是兩者的輸出,提交信息,並在文件中的變化,每一個線來表示。事情是這樣的:

1  1  config.ini   f665c63 - 6 months ago : fixes session end post 
6  1  config.ini   4541de2 - 7 months ago : fixes missing strings 
3  1  config_office.ini  4541de2 - 7 months ago : fixes missing strings 

這樣,它是簡單的解析使用grepsort等是否已經GIT中提供這個功能這個輸出?

回答

1

據我所知,git log本身不能這樣做。然而,這sed命令就能做到:

sed '/^[0-9]\+\t[0-9]\+\t[^\t]\+$/ b file; h; d; : file; G; s/\n/\t/' 

它看起來對--numstat線。任何非numstat行都被複制到保留緩衝區中,而不是打印。帶有numstat輸出的行會獲取附加的保留緩衝區的當前內容,在中間留下換行符,然後用換行符替換。