Cómo enumerar las tags Git sin astackr

Me gustaría ver qué tags tengo localmente que no están disponibles en un control remoto en particular. ¿Cómo puedo hacer esto? Sé que puedo hacer git push --tags para empujarlos a todos. Sin embargo, si hay algunas tags que no quiero presionar, ¿cómo puedo asegurarme de que no me he perdido algunas?

Puede usar lo siguiente para ver las tags que existen localmente pero no en el control remoto especificado:

 git show-ref --tags | grep -v -F "$(git ls-remote --tags <remote name> | grep -v '\^{}' | cut -f 2)" 

Tenga en count que git ls-remote muestra tanto la label anotada como la confirmación a la que apunta con ^{} , por lo que debemos eliminar los duplicates.

Una alternativa es usar los --dry-run / -n para git push :

 git push --tags --dry-run 

Esto mostrará qué cambios se habrían aplicado, pero en realidad no hará estos cambios.

Para el logging, estoy usando una variante de esto con el command 'comm':

 comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2) 

Lo estoy usando como un git alias en .gitconfig, con las citas correctas bash como esta:

 [alias] unpushed-tags = "!bash -c \"comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2)\""