git log統計代碼量命令

今天看了下,一年快到了,在這裏碼字17萬,而後想統計一下碼了多少行代碼,以下html

1,統計某人的代碼提交量,包括增長,刪除,共計:git

git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -

結果(做者名稱以*替換):編程

git log --author="*********" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -
added lines: 18768 removed lines : 9624 total lines: 9144

不到一萬行啊,略慚愧...bash

2, 提交次數排名前 5的倉庫提交者(若是看所有,去掉 head 管道便可)ui

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5

所有排名結果spa

5168 ys.y
3220 ysz
2052 ss
1860 wx
1180 j.l
1179 zc
916 gcz
801 eGG
761 scy
756 q.z
666 jl.x
602 cage
590 kirk
575 gk.c
525 yj.y
432 qb
391 zh.s
345 j.x
329 cw
280 h.y
168 allen
93 hale
餘下略...

3, 提交次數排名前 5的倉庫提交者郵箱:這個統計可能不會太準,由於不少人有不一樣的郵箱,但會使用相同的名字.net

git log --pretty=format:%ae | gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }' | sort -u -n -r | head -n 5

4, 代碼貢獻者人數統計code

git log --pretty='%aN' | sort -u | wc -l

5, 總提交數統計orm

git log --oneline | wc -l

6, 添加或修改的代碼行數htm

git log --stat|perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/'

7, 統計某段時間內的代碼變化量

git log --pretty=tformat: --since ==2017-05-11 --until=2018-03-07 --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'

 

git log 參數說明:
--author   指定做者
--stat   顯示每次更新的文件修改統計信息,會列出具體文件列表

--numstat   統計每一個commit 的文件修改行數,包括增長,刪除,並列出文件列表
--shortstat    統計每一個commit 的文件修改行數,包括增長,刪除,但不列出文件列表

 
-p 選項展開顯示每次提交的內容差別,用 -2 則僅顯示最近的兩次更新
例如:git log -p -2
--name-only 僅在提交信息後顯示已修改的文件清單
--name-status 顯示新增、修改、刪除的文件清單
--abbrev-commit 僅顯示 SHA-1 的前幾個字符,而非全部的 40 個字符
--relative-date 使用較短的相對時間顯示(好比,"2 weeks ago" )
--graph 顯示 ASCII 圖形表示的分支合併歷史
--pretty 使用其餘格式顯示歷史提交信息。可用的選項包括 oneline,short,full,fuller 和 format(後跟指定格式)
       例如: git log --pretty=oneline ; git log --pretty=short ; git log --pretty=full ; git log --pretty=fuller;
--pretty=tformat: 能夠定製要顯示的記錄格式,這樣的輸出便於後期編程提取分析
       例如:git log --pretty=format:""%h - %an, %ar : %s""

--since  限制顯示輸出的範圍,
例如: git log --since=2.weeks    顯示最近兩週的提交
選項 說明                
-(n)    僅顯示最近的 n 條提交                    
--since, --after 僅顯示指定時間以後的提交。                    
--until, --before 僅顯示指定時間以前的提交。                  
--author 僅顯示指定做者相關的提交。                
--committer 僅顯示指定提交者相關的提交。

一些例子:

git log --until=1.minute.ago // 一分鐘以前的全部

log git log --since=1.day.ago //一天以內的

log git log --since=1.hour.ago //一個小時以內的

log git log --since=`.month.ago --until=2.weeks.ago //一個月以前到半個月以前的

log git log --since ==2013-08.01 --until=2013-09-07 //某個時間段的

log  git blame 看看某一個文件的相關歷史記錄
例如:git blame index.html --date short

 

參考連接:

http://blog.csdn.net/dwarven/article/details/46550117

http://blog.csdn.net/liusuihui/article/details/52885417

相關文章
相關標籤/搜索