2009-11-07 21 views
112

Soy nuevo en Git y me parece que tiene una rama demasiados si ejecuto el siguiente comando:advertencia: refname 'cabeza' es ambiguo

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 el 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 este punto mediante la realización de una combinación donde creo que agregué la rama ambigua.

+9

¿Cuál es el primer comando que intentas ejecutar? Seguramente no es 'warning: refname 'HEAD' es ambiguo. –

+0

' remotes/origin/HEAD -> origin/master' no es un problema: simplemente muestra qué rama está predeterminada en el 'origen' remoto. La rama llamada ** 'HEAD' ** es. –

+3

Creo que necesita editar la pregunta para mostrar el comando que intenta ejecutar :) – Kris

Respuesta

186

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

Retitularlo:

git branch -m HEAD newbranch 

entonces usted puede examinar y decidir qué hacer (borrarlo, o guardar bajo un nombre de rama descriptiva)

(La rama remota origin/HEAD no es un problema)

+0

Esto también puede ocurrir si tiene un archivo o directorio con el mismo nombre que una sucursal. –

+2

Si bien 'origin/HEAD' podría no ser un problema, si crea accidentalmente una rama llamada 'origin/somebranch' que ES un problema (y dará como resultado el mismo mensaje de error" ambiguo "). Cuando trates de sacar de "alguna rama", terminarás tirando de tu rama local (accidental) en lugar de del control remoto. En ese caso, descubrí que la sugerencia de flickerfly de hacer 'git branch -d origin/somebranch' funciona muy bien. – machineghost

+0

Eso lo solucionó, gracias. Vale la pena notar que la rama "CABEZA" se crea automáticamente, no yo. Contenía una única confirmación de fusión y no pude volver a un estado limpio mediante el reflog. Entonces, renombré la rama, la borré, volví a ubicar mi maestro local "1 adelante" en el origen/maestro, pulsé sin problema –

29

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

git branch -d HEAD 

Use mayúscula -D a forzar la eliminación:

git branch -D HEAD 
+3

pero seguirá siendo ambiguo, ¿hay alguna manera de purgarlo? – RzR

+1

Esto no funciona. Debe hacer el cambio de nombre primero. –

19

Si ha creado una etiqueta llamada HEAD usando ...

git tag HEAD 

... puede simplemente eliminar esa etiqueta usando:

git tag -d HEAD 

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

1

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

git branch -d head 
-3

Verifique las referencias disponibles en su repositorio de git. Observarás dos HEAD en tu repositorio. Esto hace que su rama con el nombre HEAD sea ambigua.

git show-ref 

Solución:

  • Renombrar la rama

    git branch -m HEAD <new_branch_name> 
    

    O

  • Eliminar la rama

    git branch -d HEAD 
    
Cuestiones relacionadas