जवाबों:
आप git effort( git-extrasपैकेज से) कमांड का उपयोग कर सकते हैं, जो आंकड़ों के बारे में दिखाता है कि प्रति फ़ाइल कितने कमिट करता है (कमिट और सक्रिय दिनों के द्वारा)।
EDIT: git का प्रयास सिर्फ एक बैश स्क्रिप्ट है जिसे आप यहां पा सकते हैं और अपनी आवश्यकताओं के अनुकूल बना सकते हैं यदि आपको कुछ और विशेष चाहिए।
git help effortइसके बारे में कोई जानकारी नहीं है: /)। मुझे लगता है कि परिणाम का पहला सेट फाइलनाम द्वारा आदेश दिया गया है, और दूसरा प्रति फ़ाइल की संख्या के अनुसार। मैन पेज में मुद्दों की रिपोर्ट करने के लिए github.com/tj/git-extras/issues का भी उल्लेख किया गया है
आप निम्नलिखित की तरह कुछ कर सकते हैं:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
लॉग बस उन फ़ाइलों के नाम को आउटपुट करता है जिन्हें प्रत्येक कमिट में बदल दिया गया है, जबकि इसके बाकी हिस्से केवल छांटते हैं और शीर्ष 10 सबसे अधिक बार दिखाई देने वाले फ़ाइलनामों को आउटपुट करते हैं।
--branchesइसमें जोड़ सकते हैं git log।
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
मैंने देखा कि मार्क
और
सेह के
उत्तर दोनों
--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
rolesमेरे मामले के लिए निर्देशिका में प्रत्येक फ़ोल्डर द्वारा लेकिन आपके उपयोग के मामले को फिट करने के लिए आसानी से संशोधित किया गया है।
यह एक विंडोज़ संस्करण है
git log --pretty=format: --name-only > allfiles.csv
फिर एक्सेल में खोलें
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
पुराना सवाल है, लेकिन मुझे लगता है कि अभी भी एक बहुत ही उपयोगी सवाल है। यहाँ सीधे कार्यक्षेत्र में एक उदाहरण है। यह आपके रेपो में आपके द्वारा दी गई शाखा के संबंध में शीर्ष 10 सबसे अधिक बदली हुई फ़ाइलों को प्राप्त करेगा।
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
हम उदाहरण के लिए, दो कमिट या शाखाओं के बीच परिवर्तित फ़ाइलों का भी पता लगा सकते हैं
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
यह शायद स्पष्ट है, लेकिन, प्रदान की गई क्वेरीज़ सभी फ़ाइलों को दिखाएगी, लेकिन, शायद आपको यह जानने में कोई दिलचस्पी नहीं है कि आपका कॉन्फ़िगरेशन या प्रोजेक्ट फ़ाइलें सबसे अपडेट हैं। एक साधारण grep आपके कोड फ़ाइलों को अलग कर देगा, उदाहरण के लिए:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20