Yanıtlar:
dosya başına kaç kaydetme (kaydetme ve etkin günlere göre) hakkında istatistikleri gösteren git effort( git-extraspaketten) komutunu kullanabilirsiniz .
DÜZENLEME: git çaba sadece bir betik burada bulabilirsiniz ve daha özel bir şey gerekiyorsa ihtiyaçlarınıza adapte.
git help effortbunun hakkında hiçbir bilgisi yok: /). İlk sonuç kümesinin dosya adına göre ve ikinci sonuç kümesinin dosya başına işleme sayısına göre sıralandığını varsayıyorum. Man sayfasında ayrıca sorunları bildirmek için github.com/tj/git-extras/issues'den bahsedilir
Aşağıdaki gibi bir şey yapabilirsiniz:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Günlük yalnızca her işlemede değiştirilen dosyaların adlarını verirken geri kalanı yalnızca en sık görünen ilk 10 dosya adını sıralar ve çıkarır.
--branchesiçin git logyerel dalları hiçbirinde kaydedilmesini dahil etmek istiyorum.
--since "1 month ago"zaman penceresini daraltmak için veya diğer seçenekleri kullanmak da yararlıdır
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Her iki fark
Mark
ve
sehe en
cevapları yok --followdemektir ki çok dosya yeniden ulaştıklarında durdurmak demek ki, dosyaları. Bu komut dosyası çok daha yavaş olacak, ancak bu amaç için çalışacaktır.
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
rolesbenim durumum için dizindeki her bir klasöre göre toplar , ancak kullanım durumunuza uyacak şekilde kolayca değiştirilebilir.
Bu bir Windows sürümüdür
git log --pretty=format: --name-only > allfiles.csv
sonra excel'de aç
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),"")
pivot tablo oluştur
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Eski soru, ama yine de çok faydalı bir soru olduğunu düşünüyorum. İşte düz powershell'de çalışan bir örnek. Bu, bulunduğunuz şubeye göre deponuzdaki en çok değiştirilen 10 dosyayı alacaktır.
git log --pretty=format: --name-only | Where-Object { ![string]::IsNullOrEmpty($_) } | Sort-Object | Group-Object | Sort-Object -Property Count -Descending | Select-Object -Property Count, Name -First 10
Ayrıca iki işlem veya şube arasında değiştirilen dosyaları da bulabiliriz, örneğin
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Bu muhtemelen açıktır, ancak sağlanan sorgular tüm dosyaları gösterecektir, ancak belki de yapılandırma veya proje dosyalarınızın en güncel dosyalar olduğunu bilmekle ilgilenmiyorsunuzdur. Basit bir grep kod dosyalarınızı izole eder, örneğin:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20