advertencia: refname 'HEAD' es ambiguo

139

Soy nuevo en Git y parece que tengo una rama demasiado si ejecuto el siguiente comando:

warning: refname 'HEAD' is ambiguous.

Me sale el siguiente resultado:

warning: refname 'HEAD' is ambiguous.
From github.com:dagda1/hornget
 * branch            master     -> FETCH_HEAD
warning: refname 'HEAD' is ambiguous.
warning: refname 'HEAD' is ambiguous.

Si ejecuto git branch -a

Me sale lo siguiente:

HEAD
* master
remotes/emmekappa/master
remotes/origin/HEAD -> origin/master
remotes/origin/master

Estoy confundido por el remotes/origin/HEAD -> origin/master.

¿Qué es esto y cómo puedo deshacerme de la rama ambigua?

Llegué a esta etapa realizando una fusión donde creo que agregué la rama ambigua.

dagda1
fuente
11
¿Cuál es el primer comando que intentas ejecutar? Seguramente no lo eswarning: refname 'HEAD' is ambiguous.
Ben James
1
remotes/origin/HEAD -> origin/masterno es un problema: solo muestra qué rama es la predeterminada en remoto origin. La rama llamada HEADes.
Jakub Narębski el
3
Creo que necesita editar la pregunta para mostrar el comando que estaba tratando de ejecutar :)
Kris
Para reproducir esto, ejecute "git fetch origin HEAD: HEAD". Aparentemente intenta fusionar la rama actual en una nueva rama llamada, literalmente, HEAD.
Brain2000

Respuestas:

224

El problema es que tienes una rama llamada HEADque es absolutamente peligrosa, ya que ese es el nombre simbólico de cualquier rama que sea la rama actual .

Renombrarlo:

git branch -m HEAD newbranch

luego puede examinarlo y decidir qué hacer (eliminarlo o guardarlo bajo un nombre descriptivo de sucursal)

(La origin/HEADrama remota no es un problema)

u0b34a0f6ae
fuente
Esto también puede suceder si tiene un archivo o directorio con el mismo nombre que una rama.
Matt Connolly
2
Si bien origin/HEADpuede no ser un problema, si crea accidentalmente una rama llamada origin/somebranchque ES un problema (y dará como resultado el mismo mensaje de error "ambiguo"). Cuando intentes tirar de "somebranch", terminarás tirando de tu rama local (accidental) en lugar del control remoto. En ese caso, descubrí que la sugerencia de flickerfly de hacer git branch -d origin/somebranchfunciona muy bien.
machineghost
Eso lo solucionó, gracias. Vale la pena señalar que la rama "HEAD" se crea automáticamente, no por mí. Contenía una única confirmación de fusión y no pude volver a un estado limpio usando reflog. Entonces, cambié el nombre de la rama, la
eliminé, volví a clasificar
1
Lo mismo puede suceder con las etiquetas, no solo con las ramas.
sebix
1
ja! Trabajo con robots que tienen una cabeza y han creado una rama llamada head(minúscula).
orion elenzil
36

Además, esto eliminará la rama, si simplemente no la quieres.

git branch -d HEAD

Use una mayúscula -Dpara forzar la eliminación:

git branch -D HEAD
Josiah
fuente
3
pero seguirá siendo ambiguo, ¿hay alguna forma de purgarlo?
RzR
27

Si ha creado una etiqueta llamada HEADusando ...

git tag HEAD

... puedes eliminar esa etiqueta usando:

git tag -d HEAD

Vea este caso: kerneltrap.org/git-tag HEAD

Bengt
fuente
Esto sucede cuando agrega una etiqueta con el nombre HEAD por error, por lo que debe eliminarla como se sugiere aquí
usuario1610308
1

Esto significa que tiene una rama llamada "cabeza". Tuve el mismo problema, lo resolví haciendo el siguiente comando.

git branch -d head
stacksonstacksonstacks
fuente
1

Verifique las referencias disponibles en su repositorio git. Observará dos HEAD en su repositorio. Esto hace que su rama con refname HEAD sea ambigua.

git show-ref

Solución:

  • Renombrar la rama

    git branch -m HEAD <new_branch_name>
    

    O

  • Eliminar la sucursal

    git branch -d HEAD
    
Darshan
fuente