¿Cómo resuelvo este problema? Use git fsck
y logging!
Primero cree un archivo que contenga confirmaciones y blobs perdidos (inalcanzables). (NOTA: si hiciste algo como git gc
, ¡la basura recogerá todas sus confirmaciones y no las encontrarás aquí!)
$git fsck --lost-found > lost_found.commits
Eso le da un archivo de la siguiente manera:
colgando cometer dec2c5e72a81ef06963397a49c4b068540fc0dc3
colgando burbuja f8c2579e6cbfe022f08345fa7553feb08d60a975
colgando burbuja 0eb3e86dc112332ceadf9bc826c49bd371acc194
colgando burbuja 11cbd8eba79e01f4fd7f496b1750953146a09502
colgando cometer 18733e44097d2c7a800650cea442febc5344f9b3
colgando burbuja 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
A continuación, puede abrir este archivo con usted editor de texto favorito para copiar los hashes de cometer/blog desde allí. (* tos * macros vim funciona muy bien para esto * tos *)
ya se puede volver a iniciar sesión desde esta comprometerse con algo como git log --oneline <commit hash>
. Alternativamente, gitk, tig o cualquier otro visor de git debería funcionar.
En su caso si se encuentra el hash para cometer F el registro le mostrará algo como esto,
A---B---E---F
rápida y fácil! Ahora puedes encontrar el contexto detrás de todos esos compromisos pendientes.
P.S. Sí, lo sé, publicación tardía, pero bueno, alguien podría encontrarla aquí y encontrarla útil. (Principalmente me probable en 6 meses cuando Google La otra vez)
+1: No hay absolutamente ninguna diferencia entre un commit deliberadamente huérfano por 'commit --amend' o' rebase' y uno huérfano accidentalmente al trabajar con un HEAD separado, digamos. – Cascabel
de hecho. probablemente la forma más fácil de recuperarse de esa situación será mirar el reflog para HEAD. – araqnid
Gracias, esto ayuda. Incluso la respuesta frívola :) +1 – Amadan