2011-02-06 11 views
31

Estoy usando git 1.7.1 en Ubuntu 10.10 amd64, y estoy tratando de extraer el hash de mi repositorio HEAD para usarlo en una versión automatizada de información que compilo en mi proyecto.git describe falla con "fatal: no se encontraron nombres, no se puede describir nada".

En el pasado, este siempre se trabajó mediante el uso de

git describe --tags 

sin embargo, git está lanzando

fatal: No names found, cannot describe anything. 

a mí. ¿Alguien tiene una idea de lo que eso significa?

Google mostró solo algunos éxitos y ninguna solución.

+1

"Estoy intentando extraer el archivo de mi repositorio HEAD" no se analiza. – nes1983

+0

@nes: El OP probablemente significa hash. – Cascabel

+0

¿De verdad quiere solo el hash, o la información reunida por git describe le resulta útil? La etiqueta más reciente y la cantidad de confirmaciones intermedias son mucho más legibles que una SHA1. Es posible que desee recuperar su respuesta, ya que podría ser exactamente lo que necesita el OP, es difícil de decir. – Cascabel

Respuesta

33

Si desea la identificación si su HEAD no necesita describe, simplemente debe usar rev-parse.

git rev-parse HEAD 

Si desea un hash abreviado puede utilizar --short.

git rev-parse --short HEAD 

Si quieres un "describen" a caer de nuevo a un hash abreviado, si no puede encontrar ninguna etiqueta adecuados, puede utilizar --always.

git describe --always 
+0

Sí, eso devuelve el hash, pero lo que realmente quiero es el hash abreviado que normalmente es devuelto por git-describe que tiene como 8 caracteres o menos – Philipp

+1

@Philipp: 'git describe' normalmente devuelve una cadena basada en un objeto de etiqueta que consiste en el nombre de la etiqueta, un número de commits yy un sufijo basado en el hash. Normalmente no devuelve un hash abreviado, así que no estoy muy seguro de lo que está pidiendo. –

27

Parece que usted está esperando git-describe para incluir la etiqueta más reciente y el número de confirmaciones desde esa etiqueta. Sin embargo, el mensaje fatal: No names found significa que no tiene ninguna etiqueta en su repositorio. Debe tener al menos una etiqueta en el historial de confirmaciones para que git describe le indique la última etiqueta.

Simplemente adivinando, pero tal vez etiquetó un commit en otro lugar, pero nunca empujó la etiqueta en sentido ascendente (¿tal vez presionó el commit upstream, lo etiquetó más tarde, y no repuso?). Ahora, un nuevo clon de tu upstream te está dando este error (ya que no tiene ninguna etiqueta). Si ese es el caso, puede intentar git push --tags desde el repositorio que tiene la etiqueta que desea (donde git describe está haciendo lo que esperaba). Luego haga git pull en el repositorio que no tiene la etiqueta.

-2

Este comando me ayudó: git fetch -t

+8

Por favor, edite con más información. Las respuestas de solo código y "prueba esto" están [desaconsejadas] (http://meta.stackexchange.com/questions/196187/is-try-this-bad-practice), porque no contienen contenido que se pueda buscar y no lo hacen. explicar por qué alguien debería "probar esto". –

7

he tenido este problema en un entorno de construcción CI donde la herramienta de CI estaba realizando un clon superficial del repositorio. Esto era frustrante, porque en mi entorno de desarrollo, el comando

git describe --tags 

me daría una salida como

2.2.12-7-g8ec9d6c9 

mientras que en el entorno de construcción me gustaría conseguir los mortales "no hay nombres que se encuentran" error.Si he intentado usar la etiqueta --siempre

git describe --tags --always 

entonces yo simplemente obtener el hash de la última cometió, pero no la etiqueta más reciente antes de que se comprometan

8ec9d6c9 

Realización de una git pull en el El entorno de compilación no ayudaría, porque una vez que el repositorio ha sido clonado superficialmente, las tiradas futuras no actualizarán las etiquetas.

La solución fue asegurar que el clon inicial del reporto en el entorno de construcción no era un clon de poca profundidad (es decir, el comando git clone no se utilizó con --depth, --shallow-since o --shallow-exclude parámetros).

+0

Tuve exactamente el mismo problema, ¡gracias por tu visión! – Terenoth

Cuestiones relacionadas