tipos tag remove qué oneline log hace existen etiquetas crear git logging changelog

tag - tipos de etiquetas en git



Git changelog: ¿cómo obtener todos los cambios hasta una etiqueta específica? (7)

¿Hay una forma o comando fácil de hacer que todos los git se comprometan con una etiqueta específica para generar un registro de cambios automático para un proyecto? Siempre etiqueto mis repositorios git con un número de versión como v0.1.0 y, por ejemplo, me gustaría que todos los confirmados etiqueten v0.1.0 .

He revisado los documentos, pero parece que no encuentro una opción o comando útil para ello: http://git-scm.com/docs/git-log (está inactivo en este momento, por cierto)

Por ejemplo:

$ git log --oneline --decorate

Muestra las etiquetas junto a las confirmaciones. Me gustaría lo mismo, pero solo hasta una etiqueta específica.



Para crear listas de cambios por etiquetas, usé este script:

#!/bin/bash # Author:Andrey Nikishaev echo "CHANGELOG" echo ---------------------- git tag -l | sort -u -r | while read TAG ; do echo if [ $NEXT ];then echo [$NEXT] else echo "[Current]" fi GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT NEXT=$TAG done FIRST=$(git tag -l | head -1) echo echo [$FIRST] GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST


Se me ocurrió esta modificación del guión original. Esto maneja las etiquetas de versión correctamente.

#!/bin/bash # Author:Andrey Nikishaev echo "CHANGELOG" echo ---------------------- git tag -l --sort=v:refname | tac | while read TAG ; do echo if [ $NEXT ];then echo [$NEXT] else echo "[Current]" fi GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT NEXT=$TAG done FIRST=$(git tag -l --sort=v:refname | head -1) echo echo [$FIRST] GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST


Simplemente agregue tagname a su comando y debería estar bien :) Me gusta el --graph switch para visualizar las ramas que llevaron a esa etiqueta :)


Solo use el nombre de la etiqueta como un especificador de confirmación: git log --oneline --decorate v0.1.0


Una actualización del script sugerida por Creotiv para obtener una mejor clasificación de las etiquetas

#!/bin/bash # Author:Andrey Nikishaev, Gunnar Lindholm echo "CHANGELOG" echo ---------------------- git for-each-ref --sort=''*authordate'' --format=''%(tag)'' refs/tags |tac |grep -v ''^$'' | while read TAG ; do echo if [ $NEXT ];then echo [$NEXT] else echo "[Current]" fi GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT NEXT=$TAG done FIRST=$(git tag -l | head -1) echo echo [$FIRST] GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST


Usted puede simplemente hacer:

git log --oneline --decorate v0.1.0

... para mostrar cada compromiso hasta e incluyendo v0.1.0. Por supuesto, git log permite también restringir las confirmaciones mostradas en cualquiera de las formas en que git rev-list entiende, por lo que si solo quisiera ver los cambios entre v0.0.9 y v0.1.0 , también podría hacer:

git log --oneline --decorate v0.0.9..v0.1.0

La salida alternativa que podría ser útil para este propósito es la de git shortlog , que agrupa y resume las contribuciones de cada autor. Intenta, por ejemplo:

git shortlog v0.1.0