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 información de versión automatizada que compilo en mi proyecto.
En el pasado, esto siempre funcionaba usando
git describe --tags
sin embargo, git ahora está lanzando
fatal: No names found, cannot describe anything.
a mi. ¿Alguien tiene idea de lo que eso significa?
Google mostró solo algunos resultados y ninguna solución.
git ls-remote --tags
. En mi caso, el repositorio se ha migrado recientemente a un nuevo servidor y las etiquetas aún no se han transferido.Respuestas:
Si desea la identificación de su,
HEAD
entonces no la necesitadescribe
, solo debe usarrev-parse
.Si desea un hash abreviado, puede usar
--short
.Si desea que una "descripción" recurra a un hash abreviado si no puede encontrar ninguna etiqueta adecuada, puede usar
--always
.fuente
git describe
normalmente devuelve una cadena basada en un objeto de etiqueta que consta del nombre de la etiqueta, un número de confirmaciones y un sufijo basado en el hash. Normalmente no devuelve un hash abreviado, por lo que no estoy muy seguro de lo que está pidiendo.Parece que espera
git-describe
incluir la etiqueta más reciente y el número de confirmaciones desde esa etiqueta. Sin embargo, elfatal: No names found
mensaje significa que no tiene etiquetas en su repositorio. Debe tener al menos una etiqueta en el historial de confirmaciones paragit describe
poder decirle la última etiqueta.Solo adivinando, pero tal vez etiquetó una confirmación en otro lugar, pero nunca empujó la etiqueta corriente arriba (¿quizás empujó la confirmación corriente arriba, la etiquetó más tarde y no repush?). Ahora, un nuevo clon de su flujo ascendente le está dando este error (ya que no tiene ninguna etiqueta). Si ese es el caso, puede intentarlo
git push --tags
desde el repositorio que tiene la etiqueta que desea (dondegit describe
está haciendo lo que espera). Luego, hazlogit pull
en el repositorio que no tiene la etiqueta.fuente
He tenido este problema en un entorno de compilación de CI donde la herramienta de CI realizaba una clonación superficial del repositorio. Esto fue frustrante, porque en mi entorno de desarrollo, el comando
me daría salida como
mientras que en el entorno de compilación obtendría el error "fatal no se encontraron nombres". Si intenté usar la etiqueta --always
entonces simplemente obtendría el hash de la última confirmación, pero no la etiqueta más reciente antes de esa confirmación
Realizando un
git pull
en el entorno de compilación no ayudaría, porque una vez que el repositorio se ha clonado superficialmente, las futuras extracciones no actualizarán las etiquetas.La solución era asegurar que el clon inicial del reporto en el entorno de construcción no era un clon poco profundo (es decir, el
git clone
comando no se utilizó con--depth
,--shallow-since
o--shallow-exclude
parámetros).fuente
git fetch --depth=500
funcionó para mí con Travis-CI..travis.yml
arreglarlo para mí:git: depth: false
git fetch --tags
en el clon superficial, para buscar las etiquetas faltantesEsto sucede si no tiene etiquetas en su repositorio. Si el repositorio lo hace tener etiquetas, entonces estás en un clon sin profundidad (este es el valor por defecto en los sistemas IP, como TravisCI o acciones de GitHub).
Para obtener el historial (incluidas las etiquetas) desde un clon superficial, ejecute
Por ejemplo, en el caso de las acciones de GitHub:
Luego,
git describe
debería funcionar nuevamente.fuente
--tags
se necesitaba en mi caso, entoncesgit fetch --prune --unshallow --tags
. Vea este númeroTuve un problema similar mientras trabajaba en un trabajo de CI, el problema era que git clone o checkout scm used no recuperaba las etiquetas al clonar el repositorio.
Obteniendo sin etiquetas Obteniendo cambios ascendentes desde https: // github . **********
Puede habilitar la recuperación de etiquetas seleccionando "Comportamientos de clonación avanzados" y luego haciendo clic en recuperar etiquetas.
fuente
Si vino aquí debido a este mensaje de error en Travis CI, puede usar la siguiente configuración para evitar clones superficiales:
Probé
git fetch --tags
pero eso no funcionó.fuente
Este comando me ayudó: git fetch -t
fuente
fetch
.