Jawaban:
Anda dapat menggunakan perintah git effort(dari git-extraspaket) yang menunjukkan statistik tentang berapa banyak komit per file (berdasarkan komit dan hari aktif).
EDIT: git effort hanyalah skrip bash yang dapat Anda temukan di sini dan menyesuaikan dengan kebutuhan Anda jika Anda membutuhkan sesuatu yang lebih istimewa.
git help efforttidak memiliki informasi tentang itu: /). Saya berasumsi rangkaian hasil pertama diurutkan berdasarkan nama file, dan yang kedua berdasarkan jumlah komit per file. Halaman manual juga menyebutkan github.com/tj/git-extras/issues untuk melaporkan masalah
Anda dapat melakukan sesuatu seperti berikut:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Log hanya menampilkan nama-nama file yang telah diubah di setiap komit, sementara sisanya hanya mengurutkan dan menampilkan 10 nama file yang paling sering muncul.
--brancheske git logjika Anda ingin menyertakan komit di salah satu cabang lokal Anda.
--since "1 month ago"atau opsi lain untuk mempersempit jendela waktu
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Saya melihat bahwa
jawaban Mark
dan
sehe tidak ada --followdalam file, artinya mereka berhenti begitu mencapai nama file diganti. Skrip ini akan jauh lebih lambat, tetapi akan berfungsi untuk tujuan itu.
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
rolesdirektori untuk kasus saya tetapi mudah dimodifikasi agar sesuai dengan kasus penggunaan Anda.
Ini adalah versi windows
git log --pretty=format: --name-only > allfiles.csv
lalu buka di 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),"")
buat tabel pivot
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Pertanyaan lama, tapi menurut saya masih pertanyaan yang sangat berguna. Berikut adalah contoh kerja di PowerShell lurus. Ini akan mendapatkan 10 file paling banyak berubah di repo Anda sehubungan dengan cabang tempat Anda berada.
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
Kami juga dapat menemukan file yang diubah antara dua komit atau cabang, misalnya
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Ini mungkin jelas, tetapi, kueri yang diberikan akan menampilkan semua file, tetapi, mungkin Anda tidak tertarik untuk mengetahui bahwa konfigurasi atau file proyek Anda adalah yang terbaru. Grep sederhana akan mengisolasi file kode Anda, misalnya:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20