Ya encontré esta respuesta: número de confirmaciones en la rama en git, pero eso supone que la rama se creó desde el maestro.
¿Cómo puedo contar el número de confirmaciones a lo largo de una rama sin depender de esa suposición?
En SVN esto es trivial, pero por alguna razón es realmente difícil de entender en git.
Respuestas:
Para contar las confirmaciones para la rama en la que se encuentra:
para una rama
Si desea contar las confirmaciones en una rama realizadas desde que creó la rama
Esto contará todas las confirmaciones realizadas que no están en el nombre de la sucursal.
Ejemplos
Resultado: 3
Si su rama proviene de una rama llamada
develop
:Resultado: 3
Ignorar fusiones
Si combina otra rama en la rama actual sin avance rápido y hace lo anterior, la fusión también se cuenta. Esto se debe a que git una fusión es una confirmación.
Si no desea contar estas confirmaciones, agregue
--no-merges
:fuente
git log
muestran a continuación están funcionando mejor que cualquier otra sugerencia.Para ver el número total de confirmaciones, puede hacer lo que Peter sugirió anteriormente
Y si desea ver la cantidad de confirmaciones realizadas por cada persona, pruebe esta línea
generará resultados como este
fuente
Puede requerir una versión relativamente reciente de Git, pero esto funciona bien para mí:
Esto me da un recuento exacto de confirmaciones en la rama actual que tiene su base en master.
El comando en la respuesta de Peter
git rev-list --count HEAD ^develop
incluye muchos más commits, 678 vs 97 en mi proyecto actual.Mi historial de confirmación es lineal en esta rama, por lo que YMMV, pero me da la respuesta exacta que quería, que es "¿Cuántas confirmaciones he agregado hasta ahora en esta rama de características?".
fuente
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;
no se está alineando. DETRÁS es como 1800 cuando en realidad nada más que fusionar upstream / master ~ 400 produce cambios. usar--no-merges
no es mucho mejor, da como 900. Y si hago una combinación como esta con ~ 800, y el recuento de la lista de revoluciones es 1800, entonces hago una fusión con ~ 790 obtengo entre 6 y 28 recuento más bajo en rev -lista.Cuántas confirmaciones se realizaron en la rama actual desde el comienzo de la historia, sin contar las confirmaciones de las ramas fusionadas:
De la documentación git rev-list --help :
Nota: el clon superficial reducirá el tamaño del historial. Por ejemplo, si clonas con
--depth 1
, devolverá 1.Número de confirmaciones realizadas desde alguna otra confirmación:
o lo mismo:
o use cualquier otra referencia git :
Contar los compromisos realizados desde 2018 año
01-01-2018, 01.01.2018, 2018.01.01 también funciona.
git rev-label
Escribí un script para obtener la revisión de versión de Git en un formato como el
'$refname-c$count-g$short$_dirty'
que se expandemaster-c137-gabd32ef
.La ayuda está incluida en el script mismo.
fuente
Qué tal si
git log --pretty=oneline | wc -l
Eso debería contar todos los commits desde la perspectiva de su rama actual.
fuente
Me gusta hacer
git shortlog -s -n --all
. Le proporciona una lista de nombres y número de confirmaciones en el estilo de "tabla de clasificación".fuente
Una forma de hacerlo es enumerar el registro de su sucursal y contar las líneas.
fuente
Bueno, la respuesta seleccionada no funciona si bifurcas tu rama de una rama no específica (es decir, no
master
odevelop
).Aquí ofrezco una forma diferente que estoy usando en mis
pre-push
ganchos de git.Para más análisis, visite mi blog.
fuente
Como el OP hace referencia al número de confirmaciones en la rama en git , quiero agregar que las respuestas dadas allí también funcionan con cualquier otra rama, al menos desde la versión 2.17.1 de git (y aparentemente más confiable que la respuesta de Peter van der Does):
funcionando correctamente:
El último comando da cero confirmaciones como se esperaba ya que acabo de crear la rama. El comando anterior me da el número real de confirmaciones en mi rama de desarrollo menos las confirmaciones de combinación
no funciona correctamente
En ambos casos obtengo el número de todos los commits en la rama de desarrollo y master de donde descienden las ramas (indirectamente).
fuente
Si está utilizando un sistema UNIX, podría hacer
fuente
También puedes hacer git log | grep commit | wc -l
y recuperar el resultado
fuente
git log
salida, por lo que la confirmación se contará dos veces en el resultado. Peor aún si el mensaje de confirmación contuviera la palabra "commit" dos veces en dos líneas separadas.