Averigüe qué versión contiene una determinada confirmación de GIT a través de git describe y label de git

He seguido la publicación anterior para tratar de averiguar qué versión contiene un commit determinado de git.

git tag --contains 8f873c1ff4ca034626093d03b254e7cb8bb782dd 

Me da una list de v3.17 a v3.19-rc7 .

También encontré que hay otro command que puede hacer esto

 git describe --tag 8f873c1ff4ca034626093d03b254e7cb8bb782dd 

Pero me da un resultado diferente, v3.16-rc5-211-g8f873c1 . Observe que el resultado anterior, v3.17 a v3.19-rc7 , no contiene ninguna versión v3.16.x.

En realidad, he usado git checkout <tags> para search manualmente, luego encontré que la confirmación dada se introdujo por primera vez en v3.16.2.

¿Alguien puede explicar lo que está pasando aquí?

Estás haciendo dos preguntas diferentes.

git describe --tag 8f873c1ff4ca034626093d03b254e7cb8bb782dd te da la descripción de una confirmación específica . Comienza con la confirmación dada, luego funciona hacia atrás hasta que encuentra una label y le da una respuesta de la forma <tag>-<count>-g<commit_id> , que le dice que commit <commit_id> es <count> commits después de <tag> .

git tag --contains 8f873c1ff4ca034626093d03b254e7cb8bb782dd solicita una list de tags que contienen la confirmación determinada … lo que significa que cualquier label proporcionada en la salida de este command será más reciente que la confirmación especificada. Es decir, este command está buscando en la dirección opuesta al command anterior.

Entonces, como haces dos preguntas muy diferentes, obtienes dos respuestas diferentes.