Compter le nombre de commits sur une branche Git
J'ai trouvé cette réponse déjà: Nombre de commits de la branche dans git
mais cela suppose que la direction générale a été créée à partir du maître.
Comment puis-je compter le nombre de commits le long d'une branche sans en s'appuyant sur cette hypothèse?
Dans SVN c'est trivial, mais pour une raison qui est vraiment difficile à comprendre dans git.
- double possible de Nombre de commits de la branche dans git
Vous devez vous connecter pour publier un commentaire.
Compter les commits de la branche que vous êtes sur:
pour une branche
Si vous voulez compter les commits sur une branche qui sont faites depuis la création de la direction générale
Cela comptera tous les commits jamais faits qui ne sont pas sur la branche-nom.
Exemples
Résultat: 3
Si votre branche vient d'une branche appelée
develop
:Résultat: 3
Ignorant Fusionne
Si vous fusionnez une autre branche dans la branche courante, sans avancer rapidement et de vous faire ci-dessus, la fusion est aussi compté. C'est parce que pour git merge est un commit.
Si vous ne voulez pas compter ces commet ajouter
--no-merges
:git log
travaillent mieux que toute autre suggestion.wc
a été le premier outil que j'ai atteint, et il m'a donné le même résultat que cette réponse, pour une simple histoire sans fusionne.cette ligne
va générer une sortie comme ça
Il peut avoir besoin d'un relativement récente version de Git, mais cela fonctionne bien pour moi:
Cela me donne un compte exact de commits de la branche courante ayant sa base sur le master.
La commande dans la réponse de Pierre,
git rev-list --count HEAD ^develop
comprend beaucoup plus engage, 678 vs 97 sur mon projet en cours.Mon commit l'histoire est linéaire sur cette branche, donc YMMV, mais il me donne la réponse exacte que je voulais, ce qui est "Combien de livraisons ai-je ajouté à ce jour sur cette branche?".
Combien s'engage a été fait au courant de la branche depuis le début de l'histoire, sans compter les commits de la fusion des branches:
À partir de la documentation git rev-liste --help:
nombre de commits fait depuis certains autres commit:
ou le même:
ou l'utilisation de tout autre git de référence:
Remarque: clone simple rétrécit la taille de l'historique. E. g. si vous clone avec
--depth 1
, sera de retour 1.Compter s'engage fait depuis 2018 année
01-01-2018, 01.01.2018, 2018.01.01 fonctionne également.
git rev-label
J'ai écrit un script pour obtenir la version révision à partir de Git dans un format
'$refname-c$count-g$short$_dirty'
qui se développe pourmaster-c137-gabd32ef
.L'aide est inclus pour le script lui-même.
installation
d'utilisation
Comment sur
git log --pretty=oneline | wc -l
Qui devrait compter tous les commits de la perspective de votre branche courante.
J'aime faire
git shortlog -s -n --all
. Vous donne un "classement" style liste de noms et le nombre de validations.Une façon de le faire est liste le journal de votre branche et de compter les lignes.
Bien, la réponse choisie ne fonctionne pas si vous fourchue votre succursale de non spécifique de la branche (c'est à dire, pas
master
oudevelop
).Ici je vous propose une autre façon que j'utilise dans mon
pre-push
git crochets.Pour une analyse plus approfondie, veuillez visiter mon blog
Que l'OP références Nombre de commits de la branche dans git je tiens à ajouter que les réponses données, il fonctionne aussi avec les autres directions, au moins depuis la version git 2.17.1 picloc (et apparemment de façon plus fiable que la réponse de Peter van der N'):
fonctionne correctement:
La dernière commande donne zéro s'engage comme prévu puisque je viens de créer la branche. La commande avant de me donne le nombre réel de commits sur mon développement-branche, moins de la fusion de validation(s)
ne fonctionne pas correctement:
Dans les deux cas, je obtenir le numéro de tous les commits de la branche de développement et de maître à partir de laquelle les branches (indirectement) descendre.
Vous pouvez aussi le faire
git log | grep s'engager | wc-l
et obtenir le résultat en arrière
git log
de sortie, de sorte que commit sera compté deux fois dans le résultat. Encore pire si le message de validation ont été pour contenir le mot "valider" une fois sur deux lignes distinctes.