Como eu resolvo esse problema? Use git fsck
e registre-se!
Primeiro, crie um arquivo contendo confirmações e blobs perdidos (inacessíveis). (OBSERVAÇÃO: se você fez algo assim git gc
, o lixo coletará todos os commits e você não os encontrará aqui!)
$git fsck --lost-found > lost_found.commits
Isso fornece um arquivo como este:
pendurado cometer dec2c5e72a81ef06963397a49c4b068540fc0dc3
pendurada blob f8c2579e6cbfe022f08345fa7553feb08d60a975
pendurada blob 0eb3e86dc112332ceadf9bc826c49bd371acc194
pendurada blob 11cbd8eba79e01f4fd7f496b1750953146a09502
pendurada cometer 18733e44097d2c7a800650cea442febc5344f9b3
pendurada blob 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Você pode abrir esse arquivo com o editor de texto favorito para copiar os hashes de commit / blog a partir daí. (as macros * tosse * vim funcionam muito bem para essa tosse *)
Agora você pode fazer logon novamente desse commit com algo parecido git log --oneline <commit hash>
. Como alternativa, gitk, tig ou qualquer outro visualizador de git deve funcionar.
No seu caso, se você encontrar o hash para confirmação F, o log mostrará algo assim,
A---B---E---F
Rápido e fácil! Agora você pode encontrar o contexto por trás de todos esses commits dangling.
PS: Sim, eu sei, postagem tardia, mas bem, alguém pode encontrá-lo aqui e achar útil. (Provavelmente eu em 6 meses quando eu pesquisar isso novamente no Google)
commit --amend
ourebase
e um acidentalmente órfão ao trabalhar com um HEAD desanexado, por exemplo.