Как мне решить эту проблему? Используйте git fsck
и войдите в систему!
Сначала создайте файл, содержащий потерянные (недоступные) коммиты и BLOB-объекты. (ПРИМЕЧАНИЕ: если вы сделали что-то вроде git gc
, тогда он соберет мусор всех коммитов, и вы не найдете их здесь!)
$git fsck --lost-found > lost_found.commits
Это дает вам файл, подобный этому:
висячий коммит dec2c5e72a81ef06963397a49c4b068540fc0dc3
болтающийся шарик f8c2579e6cbfe022f08345fa7553feb08d60a975
болтающийся шарик 0eb3e86dc112332ceadf9bc826c49bd371acc194
болтающийся шарик 11cbd8eba79e01f4fd7f496b1750953146a09502
свисающий коммит 18733e44097d2c7a800650cea442febc5344f9b3
болтающийся шарик 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Затем вы можете открыть этот файл в своем любимом текстовом редакторе, чтобы скопировать из него хэши коммитов / блогов. (* кашель * макрос vim отлично подходит для этого * кашель *)
Теперь вы можете выйти из этого коммита с помощью git log --oneline <commit hash>
.
Кроме того, должен работать gitk, tig или любой другой git viewer.
В вашем случае, если вы найдете хеш для коммита F, журнал покажет вам что-то вроде этого,
A---B---E---F
Быстро и просто! Теперь вы можете найти контекст за всеми этими висячими коммитами.
P.S. Да, я знаю, поздний пост, ну да ладно, кто-то может найти это здесь и найти это полезным. (Скорее всего, я через 6 месяцев, когда я снова Google это)