3 votes

obtenir le deuxième tag git le plus récent

J'ai besoin du sha du deuxième tag git le plus récent. En exécutant

git show-ref --tags

je reçois

ab295f707bc42e8975fd4d87142ca436c0fac94f refs/tags/initial-commit-tag
1c816fc0895faeecd48b9b31e09ba825698f92a6 refs/tags/production-2018-03-06-001

qui montre les deux balises que j'ai actuellement. Comment puis-je le faire sortir juste ab295f707bc42e8975fd4d87142ca436c0fac94f ?

J'ai essayé git rev-list --tags --max-count=1 --skip=1 mais apparemment, cela inclut également les balises autres que les balises, car lorsque j'exécute la commande

git rev-list --tags --max-count=30 --skip=1

je reçois

d3d536c6745c823994b3fec8ce3b26caf2b4c6f5
08278f196cad30b5acbdd9d5f0baa58baab630bc
480513c6d94c6df52f49b91c5f90c39af4fc8f34
183a91321a85083fdf29b77bcbce5b9ca3932f12
e04e120be2f200bae88de37d1be2cebc8b07f74f
168b696f915adaea95c4e0d2a8cea68ea25538b2
0b9aa10a4f005f349e9553ac75552abc07723b95
befa7507836af93b1c765d957c65cbcf6ebea890
6850539077d82847907410d587ca3da047043915
a0a6d7b98c64ad318ff0d2c4252ac1ad94959bb2
3e91ed05db57b5dec23df0a465b9c8bc0a8dfe26
2341cf5a58974a9f57b0aa92a837e7857631f5cb
385a88d22c77cf26f21a906a2be65695528960b9
c7548f04d7b928eb7bf2f485aeb6fa78ef6846e9
a5abb21b1acb59617e3d69173d883c3e5f7db0f2
b0595fae8c8f697aa02dbd49d149da4f4efabad6
2c08455a1b86e1ba6de86844a83346262ab89e00

Il n'y a donc pas que des tags dans cette liste. Comment puis-je filtrer pour n'avoir que des tags dans cette liste / faire en sorte que la première commande fonctionne pour ne montrer que le deuxième plus récent ?

Note : je suis sur Mac/Linux, donc le piping bash fonctionnerait également.

EDIT :

En fin de compte, le --no-walk option wordked pour moi, donc

git rev-list --tags --max-count=1 --skip=1 --no-walk

La réponse acceptée ci-dessous est cependant beaucoup plus puissante.

3voto

Aserre Points 3313

Vous pouvez remanier un peu votre commande git et l'envoyer à sed pour extraire les données dont vous avez besoin :

git for-each-ref --sort=-taggerdate --format '%(objectname)' refs/tags | sed -n 2p  

Explication :

  • git for-each-ref : lien de documentation . Affiche des informations sur les références.
    • --sort=-taggerdate : trier en sens inverse la sortie par date de tag
    • --format '%(objectname)' : nous ne sortons que le hash
    • refs/tags : nous ne listons que les tags dans refs/tags
  • sed -n 2p : sortie uniquement de la 2ème ligne

Notez que si vous ne disposez pas d'un taggerdate sur vos étiquettes, vous pouvez utiliser d'autres options de tri, telles que creatordate (liste complète des domaines disponibles aquí ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X