tipos tag remove practices etiquetas crear best git build-process revision

remove - git tag best practices



¿Cómo consigo el conteo de Git commit? (20)

El que solía usar era:

git log | grep "^commit" | wc -l

Simple pero funcionó.

Me gustaría obtener el número de confirmaciones de mi repositorio Git, un poco como los números de revisión SVN.

El objetivo es usarlo como un número de compilación único y creciente.

Actualmente me gusta eso, en Unix / Cygwin / msysGit:

git log --pretty=format:'''' | wc -l

Pero siento que es un poco hack.

¿Hay una mejor manera de hacer eso? Sería genial si realmente no necesitara wc o incluso Git, por lo que podría funcionar en un Windows desnudo. Solo lee un archivo o una estructura de directorio ...


En nuestra compañía, nos mudamos de SVN a Git. La falta de números de revisión fue un gran problema!

Haga git svn clone , y luego etiquete la última confirmación SVN por su número de revisión SVN:

export hr=`git svn find-rev HEAD` git tag "$hr" -f HEAD

A continuación, puede obtener el número de revisión con la ayuda de

git describe --tags --long

Este comando da algo como:

7603-3-g7f4610d

Medios: La última etiqueta es 7603, es la revisión de SVN. 3 - es el conteo de los cometidos de él. Necesitamos añadirlos.

Entonces, el número de revisión puede ser contado por este script:

expr $(git describe --tags --long | cut -d ''-'' -f 1) + $(git describe --tags --long | cut -d ''-'' -f 2)


Este comando devuelve el recuento de confirmaciones agrupadas por los comprometidos:

git shortlog -s git shortlog -s 14 John lennon 9 Janis Joplin


Genera un número durante la construcción y escríbelo en un archivo. Siempre que realice un lanzamiento, confirme ese archivo con el comentario "Compilación 147" (o cualquiera que sea el número de compilación actual). No cometas el archivo durante el desarrollo normal. De esta manera, puede asignar fácilmente entre los números de compilación y las versiones en Git.


Git shortlog es una forma de obtener los detalles de confirmación:

git shortlog -s -n

Esto le dará el número de confirmaciones seguidas por el nombre del autor. La opción -s elimina todos los mensajes de confirmación para cada confirmación que realizó el autor. Elimine la misma opción si también desea ver los mensajes de confirmación. La opción -n se usa para ordenar la lista completa. Espero que esto ayude.



No eres el primero en pensar en un "número de revisión" en Git , pero '' wc '' es bastante peligroso, ya que el commit se puede borrar o aplastar, y la historia se puede revisar.

El "número de revisión" fue especialmente importante para Subversion, ya que era necesario en caso de fusión (SVN1.5 y 1.6 han mejorado en ese frente).

Podría terminar con un gancho de confirmación previa que incluiría un número de revisión en el comentario, con un algoritmo que no implique buscar el historial completo de una rama para determinar el número correcto.

Bazaar realmente creó un algoritmo de este tipo , y puede ser un buen punto de partida para lo que quiere hacer.

(Como señala la respuesta de Bombe , Git tiene en realidad un algoritmo propio, basado en la última etiqueta, más el número de confirmaciones, más un poco de una tecla SHA-1). Deberías ver (y votar) su respuesta si te funciona.

Para ilustrar la idea de Aaron , también puede agregar el hash de confirmación Git en el archivo de "información" de la aplicación que está distribuyendo con su aplicación.

De esa manera, el cuadro sobre se vería así:

El número aplicativo es parte del compromiso, pero el archivo de "información" de la aplicación se genera durante el proceso de empaquetado, vinculando efectivamente un número de compilación aplicativo a un id de revisión técnica.


Para obtener un recuento de confirmaciones para una revisión ( HEAD , master , un hash de confirmación):

git rev-list --count <revision>

Para obtener el conteo de compromiso en todas las ramas:

git rev-list --all --count

Recomiendo no usar esto para el identificador de compilación, pero si debe hacerlo, probablemente sea mejor usar el conteo para la rama contra la que está construyendo De esa manera la misma revisión siempre tendrá el mismo número. Si utiliza el recuento para todas las sucursales, la actividad en otras sucursales podría cambiar el número.


Para ponerlo en una variable, la forma más fácil es:

export GIT_REV_COUNT=`git rev-list --all --count`


Puedes probar

git log --oneline | wc -l

o para enumerar todas las confirmaciones realizadas por las personas que contribuyen en el repositorio

git shortlog -s


Si está buscando un identificador único y aún bastante legible para las confirmaciones, git describe podría ser justo lo que necesita.


Si solo estás usando una rama, como master, creo que esto funcionaría muy bien:

git rev-list --full-history --all | wc -l

Esto solo dará salida a un número. Puedes alias a algo como

git revno

para hacer las cosas realmente convenientes. Para hacerlo, edite su archivo .git/config y agregue esto en:

[alias] revno = "!git rev-list --full-history --all | wc -l"

Esto no funcionará en Windows. No sé el equivalente de "wc" para ese sistema operativo, pero escribir una secuencia de comandos de Python para hacer el recuento para usted sería una solución multiplataforma.


U solo puede usar:

git shortlog -s -n

Resultado:

827 user one 15 user two 2 Gest


Una forma sencilla es:

git log --oneline | wc -l

oneline asegura que


Usa git shortlog como este

git shortlog -sn

O crea un alias (para terminal basado en ZSH)

# show contributors by commits alias gcall="git shortlog -sn"


Usando la sintaxis de Bash,

$(git rev-list --count HEAD)

se ve bien para la historia puramente lineal. Si también desea a veces tener "números" de las sucursales (basadas fuera del master ), considere:

$(git rev-list --count $(git merge-base master HEAD)).$(git rev-list --count ^master HEAD)

Cuando se ejecuta desde un checkout de master , se obtiene simplemente 1234.0 o similar. Cuando se ejecuta desde un checkout de una rama, obtendrá algo como 1234.13 , si se han realizado 13 confirmaciones en esa rama. Obviamente, esto es útil solo en la medida en que está basando como máximo una rama de una revisión master dada.

--first-parent podría agregarse al micro número para suprimir algunas confirmaciones que surgen solo de la fusión de otras ramas, aunque probablemente no sea necesario.


git rev-parse - corto HEAD


git config --global alias.count ''rev-list --all --count''

Si agrega esto a su configuración, puede simplemente hacer referencia al comando;

git count


git rev-list HEAD --count

git rev-list

git rev-list <commit> : enumere las confirmaciones que son accesibles siguiendo los enlaces principales desde la confirmación dada (en este caso, HEAD ).

--count : imprime un número que indica cuántas confirmaciones se han incluido y suprime todas las demás salidas.


git shortlog es una forma.