remota - Rama rota en git, fatal: su rama actual parece estar rota
git push example (7)
Aquí está mi caso:
- Estaba trabajando en una rama.
- Empujó nuevos compromisos al mando a distancia.
- Cambiado de nuevo a la rama maestra.
Pero de repente, después de escribir git checkout master
command, mi computadora encontró la pantalla azul de la muerte y ocurrió un cierre inesperado de fuerza. Después de volver a encender mi computadora, he comprobado el estado de mi rama actual y, como resultado, obtuve todos y cada uno de los archivos como archivos nuevos marcados.
Ahora, estoy atascado en este punto y después git log
comando git log
, estoy recibiendo un error
$ git log
fatal: your current branch appears to be broken
¿Cómo resolver este problema y recuperar mi sucursal ?.
Estoy trabajando con Windows 7 y la última versión de Git Bash.
Edit: No quiero borrar esta rama.
En algún momento también puede ocurrir debido a problemas con los permisos de archivos, verifique si tiene los permisos adecuados para todos los archivos en el repositorio.
Es posible que encuentre este error si intenta cambiar el nombre de una rama a una rama con espacio de nombre (o carpeta).
Si sucede, vaya a los directorios .git/logs/refs/heads/<name>
y .git/refs/heads/<name>
, y verá que su sucursal ahora es una carpeta con un archivo dentro.
En ambas carpetas, mueva el archivo al nivel de la carpeta, extraiga esa rama, elimine las carpetas ahora vacías y ahora debería poder realizar la git checkout -b <name>/<subname>
sin error, o la git branch -M <name>/<subname>
.
Lo resolví clonando el repositorio en una nueva carpeta y luego reemplazando los archivos modificados. No parece ser una buena solución, ¡pero es segura!
Los archivos en el directorio .git / refs / heads son sus sucursales. Revisa esos archivos. Deben contener un solo hash SHA-1 de objetos de confirmación. Este hash es su última clave de SHA-1 y su HEAD al mismo tiempo.
Copie la clave SHA-1 y escriba
$ git cat-file -t 5917fefd485f655ab369d4e9eeda3c157c03f514
commit
$ git cat-file -p 5917fefd485f655ab369d4e9eeda3c157c03f514
tree b75cab3c54b780075b312be3e878b389a2baf904
parent 8235189aa22169295243d295fb1cc2ff2f8f7cd5
author Ilker Cat <[email protected]> 1495136738 +0200
committer Ilker Cat <[email protected]> 1495136738 +0200
La segunda salida es lo que básicamente contiene un objeto de confirmación. Intente verificar si el objeto de confirmación en su rama maestra bajo .git / refs / heads / master y su árbol y sus claves SHA-1 principales no están dañados.
Incluso algunos apóstrofes dentro de tu archivo de ramas maestro conducirán a una "rama rota". Debe contener solo el último hash de SHA-1 del objeto de confirmación y nada más.
Me encuentro con un problema similar en Windows 7. En mi caso, el archivo de la rama actual (consulte con ./git/HEAD
) en /.git/refs/heads
estaba roto.
Encontré el código hash de la rama actual rota en .git/logs/refs/heads
con el mismo nombre de rama.
Y solucioné el problema abriendo ese archivo ( .git/logs/refs/heads/xxx
) a través del bloc de notas y copié el cuarto número (el código hash) a ( .git/refs/heads/xxx
)
Su nombre de rama ahora probablemente contiene algunos caracteres especiales o algo así.
Debes ir al directorio raíz de tu registro de salida (donde se encuentra el directorio .git/
) y
- Editar elemento de lista
.git/packed-refs
; Si ve una línea con el nombre de su rama, entonces bórrela. - busque en
.git/refs/heads for
un archivo con el nombre de su rama; si ves uno, bórralo
Tenía el mismo problema. Eliminar .git / refs / heads / solucionó el problema para mí.