2011-10-07 18 views

回答

25

可以使用git effort(從git-extras包)命令,顯示每個文件提交數量(通過提交和活動)的統計數據 天)。

編輯:git的努力是只是 bash腳本you can find here並適應您的需求,如果你需要更特別的東西。

+6

哦,人!這太酷了。 – Sebastian

+0

輸出將分爲兩部分,首先得到未分類的結果,然後是已排序(和已着色)的結果。對? – Andy

+0

@它似乎(和'git幫助努力'沒有關於它的信息:/)。我假設第一組結果按文件名排序,第二組結果按每個文件提交數量排序。手冊頁還提到https://github.com/tj/git-extras/issues報告問題 – Asenar

89

你可以做類似如下:

git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10 

日誌只輸出已在每個被更改提交文件的名稱,而它的其餘部分只是排序並輸出10個最頻繁出現文件名。

+4

不錯的解決方案。每次我在git標籤頁中看到你的名字時,我都會閱讀你寫的內容。它總是一種樂趣;) – lucapette

+0

@lucapette:謝謝,這是你說的這樣:) –

+0

你可以告訴我,如果這是基於當前分支或如果它是整個存儲庫?那麼尚未合併的分行呢? –

0

我們還可以找出在兩個提交或分支之間改變的文件,例如,

git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50 
3

對於PowerShell的,假設你有混帳bash的安裝

git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10 
+1

非常感謝 – StevenMcD

0

這可能是顯而易見的,但是,只要將顯示所有文件,但是,查詢也許你不感興趣的,因爲您知道配置或項目文件是最新的。一個簡單的grep將隔離到你的代碼文件,例如:

git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20 
6

我注意到,這兩個 Mark’ssehe’s 答案不--follow文件,也就是說他們停止一旦達到一個文件重命名。這個腳本會慢很多,但是會爲此目的而工作。

git ls-files | 
while read aa 
do 
    printf . >&2 
    set $(git log --follow --oneline "$aa" | wc) 
    printf '%s\t%s\n' $1 "$aa" 
done > bb 
echo 
sort -nr bb 
rm bb 

git-most.sh

1
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort 

如果你只是想看到你的文件添加到--authorgit whatchanged --author=name --all

+0

很酷,謝謝! :) – Yekver

2

這是一個Windows版本

git log --pretty=format: --name-only > allfiles.csv 

然後在Excel

A1: FileName 
A2: isVisibleFilename >> =IFERROR(IF(C2>0,TRUE,FALSE),FALSE) 
A3: DotLocation >> =FIND("@",SUBSTITUTE(A2,".","@",(LEN(A2)-LEN(SUBSTITUTE(A2,".","")))/LEN("."))) 
A4: HasExt  >> =C2>1 
A5: TYPE  >> =IF(D2=TRUE,MID(A2,C2+1,18),"") 

創建數據透視表打開

values: Type 
    Filter: isFilename = true 
    Rows : Type 
    Sub : FileName 

click [Count Of TYPE] -> Sort -> Sort Largest To Smallest