¿Cómo resuelvo este problema? Uso git fsck
y registro!
Primero cree un archivo que contenga confirmaciones y blobs perdidos (inalcanzables). (NOTA: si hiciste algo así, git gc
entonces recolectará basura todos los compromisos y ¡no los encontrarás aquí!)
$git fsck --lost-found > lost_found.commits
Eso te da un archivo como este:
colgando cometer dec2c5e72a81ef06963397a49c4b068540fc0dc3
colgando burbuja f8c2579e6cbfe022f08345fa7553feb08d60a975
colgando burbuja 0eb3e86dc112332ceadf9bc826c49bd371acc194
colgando burbuja 11cbd8eba79e01f4fd7f496b1750953146a09502
colgando cometer 18733e44097d2c7a800650cea442febc5344f9b3
colgando burbuja 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Luego puede abrir este archivo con su editor de texto favorito para copiar los hash de confirmación / blog desde allí. (* tos * vim macros funciona muy bien para esto * tos *)
Ahora puede volver a iniciar sesión desde este commit con algo como git log --oneline <commit hash>
. Alternativamente, gitk, tig o cualquier otro visor de git deberían funcionar.
En su caso, si encuentra el hash para commit F, el registro le mostrará algo como esto,
A---B---E---F
¡Rapido y Facil! Ahora puede encontrar el contexto detrás de todas esas confirmaciones pendientes.
PD Sí, lo sé, publicación tardía, pero bueno, alguien podría encontrarlo aquí y encontrarlo útil. (Lo más probable es que yo en 6 meses cuando vuelva a googlear esto)
commit --amend
orebase
y uno huérfano accidentalmente trabajando con un HEAD separado, por ejemplo.