今天看了下,一年快到了,在這裏碼字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