git shortlog命令

git shortlog命令用於彙總git日誌輸出。

使用語法

git log --pretty=short | git shortlog [<options>]
git shortlog [<options>] [<revision range>] [[\--] <path>…​]

描述

適當包含在發佈公告中的格式彙總git日誌輸出。每個提交將按作者和標題分組。

另外,「[PATCH]」將從提交描述中刪除。

如果在命令行上沒有傳遞修訂版本,並且標準輸入不是終端或沒有當前的分支,則git shortlog將輸出從標準輸入讀取的日誌的摘要,而不引用當前存儲庫。

場景假設

一個開發小組有10個程序員,他們用 Git 做版本控制,某一天程序員A push了當天的幾個commit之後,突然在想「我在這個項目到底一共進行過多少次commit?誰比我commit更多?多多少?誰是組裏面進行最多 commit的?誰是最少的?」

Git 非常人性化地支持這樣一個命令:

$ git shortlog

這個命令會返回這個 git repository 底下每個用戶進行 commit 的次數,以及每次 commit 的註釋。

-s 參數省略每次 commit 的註釋,僅僅返回一個簡單的統計。
-n 參數按照 commit 數量從多到少的順利對用戶進行排序

示例

以下是一些示例 -

$ git shortlog -s -n
  135  Tom Preston-Werner
  15  Jack Danger Canty
  10  Chris Van Pelt
  7  Mark Reid
  6  remi
  3  Mikael Lind
  3  Toby DiPasquale
  2  Aristotle Pagaltzis
  2  Basil Shkara
  2  John Reilly
  2  PJ Hyett
  1  Marc Chung
  1  Nick Gerakines
  1  Nick Quaranto
  1  Tom Kirchner

比如想要知道一個開源項目(例如 Graphiti )的 commit 統計

$ git shortlog -s -n
    16  maxsu
     5  your_name
     2  minsu
     1  Maxsu

上面的結果表明, maxsu 確實是這個開源項目的主要開發者。