Réponses:
vous pouvez utiliser la commande git effort
(à partir du git-extras
package) qui affiche des statistiques sur le nombre de commits par fichiers (par commits et jours actifs).
EDIT: git effort est juste un script bash que vous pouvez trouver ici et adapter à vos besoins si vous avez besoin de quelque chose de plus spécial.
git help effort
n'a aucune information à ce sujet: /). Je suppose que le premier ensemble de résultats est trié par nom de fichier et le second par numéro de commit par fichier. La page de manuel mentionne également github.com/tj/git-extras/issues pour signaler les problèmes
Vous pouvez faire quelque chose comme ceci:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Le journal affiche simplement les noms des fichiers qui ont été modifiés à chaque commit, tandis que le reste trie et affiche simplement les 10 noms de fichiers les plus fréquents.
--branches
à git log
si vous souhaitez inclure des commits sur l'une de vos branches locales.
--since "1 month ago"
ou d'autres options pour réduire la fenêtre de temps
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
J'ai remarqué que
les
réponses de Mark
et de
sehe ne --follow
concernent pas les fichiers, c'est-à-dire qu'elles s'arrêtent une fois qu'elles atteignent un fichier renommé. Ce script sera beaucoup plus lent, mais fonctionnera dans ce but.
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
répertoire pour mon cas, mais est facilement modifié pour s'adapter à votre cas d'utilisation.
Ceci est une version Windows
git log --pretty=format: --name-only > allfiles.csv
puis ouvrir dans 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),"")
créer un tableau croisé dynamique
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
Ancienne question, mais je pense encore une question très utile. Voici un exemple de travail en PowerShell droit. Cela obtiendra les 10 fichiers les plus modifiés dans votre dépôt par rapport à la branche sur laquelle vous vous trouvez.
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
Nous pouvons également trouver des fichiers modifiés entre deux commits ou branches, par exemple
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
C'est probablement évident, mais les requêtes fournies afficheront tous les fichiers, mais peut-être que vous n'êtes pas intéressé de savoir que vos fichiers de configuration ou de projet sont les plus à jour. Un simple grep isolera vos fichiers de code, par exemple:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20