Câu trả lời:
bạn có thể sử dụng lệnh git effort
(từ git-extras
gói) hiển thị số liệu thống kê về số lần cam kết trên mỗi tệp (theo số lần cam kết và số ngày hoạt động).
CHỈNH SỬA: git nỗ lực chỉ là một tập lệnh cơ bản mà bạn có thể tìm thấy ở đây và điều chỉnh theo nhu cầu của bạn nếu bạn cần thứ gì đó đặc biệt hơn.
git help effort
không có thông tin gì về nó: /). Tôi giả sử tập hợp kết quả đầu tiên được sắp xếp theo tên tệp và kết quả thứ hai theo số lượng cam kết trên mỗi tệp. Trang người đàn ông cũng đề cập đến github.com/tj/git-extras/issues để báo cáo sự cố
Bạn có thể làm điều gì đó như sau:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Nhật ký chỉ xuất ra tên của các tệp đã được thay đổi trong mỗi lần cam kết, trong khi phần còn lại của nó chỉ sắp xếp và xuất ra 10 tên tệp xuất hiện thường xuyên nhất.
--branches
vào git log
nếu bạn muốn bao gồm các cam kết trên bất kỳ chi nhánh nào tại địa phương của mình.
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
Tôi nhận thấy rằng cả
câu trả lời của Mark
và
sehe đều không phải --follow
là tệp, nghĩa là chúng dừng lại sau khi đổi tên tệp. Tập lệnh này sẽ chậm hơn nhiều, nhưng sẽ hoạt động cho mục đích đó.
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
roles
cho trường hợp của tôi nhưng dễ dàng sửa đổi để phù hợp với trường hợp sử dụng của bạn.
Đây là phiên bản windows
git log --pretty=format: --name-only > allfiles.csv
sau đó mở trong 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),"")
tạo bảng tổng hợp
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Câu hỏi cũ, nhưng tôi nghĩ vẫn là một câu hỏi rất hữu ích. Đây là một ví dụ làm việc trong powershell thẳng. Điều này sẽ nhận được 10 tệp được thay đổi nhiều nhất trong kho lưu trữ của bạn liên quan đến nhánh bạn đang tham gia.
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
Chúng tôi cũng có thể tìm ra các tệp được thay đổi giữa hai cam kết hoặc nhánh, ví dụ:
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
Điều này có lẽ là hiển nhiên, nhưng, các truy vấn được cung cấp sẽ hiển thị tất cả các tệp, nhưng có lẽ bạn không quan tâm đến việc biết rằng các tệp cấu hình hoặc dự án của bạn là tệp được cập nhật nhiều nhất. Một grep đơn giản sẽ cách ly với các tệp mã của bạn, ví dụ:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20