ver tag remote modificados example archivos git

tag - git remote



¿Por qué mi repositorio de Git entró en un estado HEAD separado? (8)

Cualquier verificación de un compromiso que no sea el nombre de una de sus sucursales le otorgará una HEAD separada. Un SHA1 que representa la punta de una rama aún da una CABEZA separada. Sólo una extracción de un nombre de sucursal local evita ese modo.

Ver comprometerse con una CABEZA separada

Cuando HEAD se separa, se ejecuta el trabajo como normal, excepto que no se actualiza ninguna rama con nombre. (Puedes pensar en esto como una rama anónima).

Por ejemplo, si selecciona una "rama remota" sin rastrearla primero, puede terminar con una CABEZA desconectada.

Ver git: cambiar rama sin desmontar la cabeza.

Terminé con una cabeza desconectada hoy, el mismo problema que se describe en: git push dice que todo está actualizado aunque tenga cambios locales

Por lo que sé, no hice nada fuera de lo común, solo me comprometo y presiona desde mi repositorio local.

Entonces, ¿cómo terminé con una detached HEAD ?


Cuando realice la verificación de un compromiso git checkout <commit-hash> o de una sucursal remota, su HEAD se separará e intentará crear un nuevo commit en él.

Los compromisos que no sean accesibles por ninguna rama o etiqueta se recolectarán y se eliminarán del repositorio después de 30 días.

Otra forma de resolver esto es mediante la creación de una nueva rama para la confirmación y el pago que se acaba de crear. git checkout -b <branch-name> <commit-hash>

Este artículo ilustra cómo puedes llegar al estado HEAD separado .


La otra forma de entrar en un estado de cabeza separada de git es intentar comprometerse con una rama remota. Algo como:

git fetch git checkout origin/foo vi bar git commit -a -m ''changed bar''

¡Tenga en cuenta que si hace esto, cualquier otro intento de verificar el origen / foo lo devolverá a un estado de cabeza separada!

La solución es crear su propia rama local de foo que rastree origen / foo, y luego oprima opcionalmente.

Probablemente esto no tenga nada que ver con su problema original, pero esta página es alta en los resultados de Google para "git detached head" y este escenario está muy poco documentado.


Puede suceder fácilmente si intenta deshacer los cambios que realizó al volver a verificar los archivos y no obtener la sintaxis correcta.

Puede ver la salida del git log de git log ; puede pegar la cola del registro aquí desde el último envío exitoso, y todos pudimos ver lo que hizo. O puedes pegarlo y preguntarle en #git en freenode IRC.


Puede suceder si tienes una etiqueta con el mismo nombre que una rama.

Ejemplo: si "release / 0.1" es el nombre de la etiqueta, entonces

git checkout release/0.1

produce un HEAD separado en "release / 0.1". Si esperas que release / 0.1 sea un nombre de rama, entonces te confundes.


Una forma accidental simple es hacer un git checkout head como un error tipográfico de HEAD .

Prueba esto:

git init touch Readme.md git add Readme.md git commit git checkout head

lo que da

Note: checking out ''head''. You are in ''detached HEAD'' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at 9354043... Readme


tratar

git reflog

esto le da una historia de cómo se movieron sus punteros HEAD y de rama en el pasado.

p.ej :

88ea06b HEAD @ {0}: verificación: pasar de DESARROLLO a remotos / origen / SomeNiceFeature e47bf80 HEAD @ {1}: extraer origen DESARROLLO: avance rápido

la parte superior de esta lista es una que podría encontrar un estado de CABEZA ADAPTADA ... al revisar una rama de seguimiento remoto.


He reproducido esto ahora por accidente:

  1. enumera las ramas remotas

    git branch -r origin/Feature/f1234 origin/master

  2. Quiero sacar una localmente, entonces corté pegar:

    git checkout origin/Feature/f1234

  3. ¡Presto! Estado HEAD separado

    You are in ''detached HEAD'' state. [...])

Solución # 1:

No incluya el origin/ en la parte frontal de la especificación de mi sucursal al verificarlo:

git checkout Feature/f1234

Solución # 2:

Agregar el parámetro -b que crea una rama local desde el control remoto

git checkout -b origin/Feature/f1234 o

git checkout -b Feature/f1234 volverá al origen automáticamente