J'ai déjà trouvé cette réponse: nombre de commits sur la branche dans git mais cela suppose que la branche a été créée à partir de master.
Comment puis-je compter le nombre de commits le long d'une branche sans compter sur cette hypothèse?
Dans SVN, c'est trivial, mais pour une raison quelconque, c'est vraiment difficile à comprendre dans git.
Réponses:
Pour compter les validations de la branche sur laquelle vous vous trouvez:
pour une succursale
Si vous voulez compter les commits sur une branche qui sont effectués depuis que vous avez créé la branche
Cela comptera tous les commits jamais faits qui ne sont pas sur le nom de la branche.
Exemples
Résultat: 3
Si votre succursale provient d'une succursale appelée
develop
:Résultat: 3
Ignorer les fusions
Si vous fusionnez une autre branche dans la branche actuelle sans avance rapide et que vous faites ce qui précède, la fusion est également comptabilisée. C'est parce que pour git, une fusion est un commit.
Si vous ne voulez pas compter ces commits, ajoutez
--no-merges
:la source
git log
fonctionnent mieux que toutes les autres suggestions.Pour voir le nombre total de validations, vous pouvez faire comme Peter l'a suggéré ci-dessus
Et si vous voulez voir le nombre de commits effectués par chaque personne, essayez cette ligne
générera une sortie comme celle-ci
la source
Cela peut nécessiter une version relativement récente de Git, mais cela fonctionne bien pour moi:
Cela me donne un nombre exact de commits dans la branche actuelle ayant sa base sur master.
La commande dans la réponse de Peter
git rev-list --count HEAD ^develop
inclut beaucoup plus de commits, 678 contre 97 sur mon projet actuel.Mon historique de commit est linéaire sur cette branche, donc YMMV, mais il me donne la réponse exacte que je voulais, qui est "Combien de commits ai-je ajouté jusqu'à présent sur cette branche de fonctionnalité?".
la source
A special notation "<commit1>..<commit2>" can be used as a short-hand for "^'<commit1>' <commit2>". For example, either of the following may be used interchangeably: $ git rev-list origin..HEAD $ git rev-list HEAD ^origin
git fetch upstream; BEHIND=$(git rev-list --count HEAD..upstream/master); git merge --ff-only upstream/master~$BEHIND;
ne fait pas la queue. BEHIND est comme 1800 alors qu'en réalité rien de plus que la fusion amont / maître ~ 400 ne produit des changements. l'utilisation--no-merges
n'est pas beaucoup mieux, donne comme 900. Et si je fais une fusion comme celle-ci avec ~ 800, et que le nombre de rev-list est de 1800, alors je fais une fusion avec ~ 790, j'obtiens entre 6 et 28 moins de rev -liste.Combien de commits a été effectué sur la branche actuelle depuis le début de l'historique, sans compter les commits des branches fusionnées:
De la documentation git rev-list --help :
Remarque: le clone peu profond réduira la taille de l'historique. Par exemple, si vous clonez avec
--depth 1
, retournera 1.nombre de commits effectués depuis un autre commit:
ou le même:
ou utilisez toute autre référence git :
Nombre de commits effectués depuis l'année 2018
01-01-2018, 01.01.2018, 2018.01.01 fonctionne également.
git rev-label
J'ai écrit un script pour obtenir la révision de version de Git dans un format comme celui
'$refname-c$count-g$short$_dirty'
qui se développe enmaster-c137-gabd32ef
.L'aide est incluse dans le script lui-même.
la source
Que diriez-vous
git log --pretty=oneline | wc -l
Cela devrait compter tous les commits du point de vue de votre branche actuelle.
la source
J'aime faire
git shortlog -s -n --all
. Vous donne une liste de style "classement" de noms et de nombre de commits.la source
Une façon de le faire est de répertorier le journal de votre succursale et de compter les lignes.
la source
Eh bien, la réponse sélectionnée ne fonctionne pas si vous avez bifurqué votre branche hors d'une branche non spécifique (c'est-à-dire non
master
oudevelop
).Ici, je propose une autre manière que j'utilise dans mes
pre-push
hooks git.Pour plus d'analyse, veuillez visiter mon blog
la source
Comme l'OP fait référence au nombre de commits sur la branche dans git, je veux ajouter que les réponses données là-bas fonctionnent également avec n'importe quelle autre branche, au moins depuis la version 2.17.1 de git (et apparemment plus fiable que la réponse de Peter van der Does):
fonctionne correctement:
La dernière commande donne zéro commits comme prévu puisque je viens de créer la branche. La commande précédente me donne le nombre réel de commits sur ma branche de développement moins le (s) merge-commit (s)
ne fonctionne pas correctement:
Dans les deux cas, j'obtiens le nombre de tous les commits dans la branche de développement et le maître dont les branches descendent (indirectement).
la source
Si vous utilisez un système UNIX, vous pouvez faire
la source
Vous pouvez utiliser cette commande qui utilise awk sur git bash / unix pour obtenir le nombre de validations.
la source
Vous pouvez également faire git log | grep commit | wc -l
et récupérez le résultat
la source
git log
sortie, de sorte que le commit sera compté deux fois dans le résultat. Pire encore si le message de validation devait contenir le mot «commit» deux fois sur deux lignes distinctes.