Як я вирішую цю проблему? Використання git fsck
та ведення журналу!
Спочатку створіть файл, що містить втрачені (недоступні) коміти та краплі. (ПРИМІТКА. Якщо ви зробили щось подібне, git gc
то сміття збиратиме всі вони, які вони здійснюють, і ви їх тут не знайдете!)
$git fsck --lost-found > lost_found.commits
Це дає вам такий файл:
обірваний зробити dec2c5e72a81ef06963397a49c4b068540fc0dc3
обірваних БЛОБ f8c2579e6cbfe022f08345fa7553feb08d60a975
обірваних БЛОБ 0eb3e86dc112332ceadf9bc826c49bd371acc194
обірваних БЛОБ 11cbd8eba79e01f4fd7f496b1750953146a09502
обірваних зробити 18733e44097d2c7a800650cea442febc5344f9b3
обірваних блоб 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Потім ви можете відкрити цей файл улюбленим текстовим редактором, щоб скопіювати звідти хеші фіксування / блогу. (* кашель * vim макроси відмінно підходить для цього * кашель *)
Тепер ви можете увійти з цього комітету з чимось подібним git log --oneline <commit hash>
. Крім того, gitk, tig або будь-який інший переглядач git повинен працювати.
У вашому випадку, якщо ви знайдете хеш для фіксації F, журнал покаже вам щось подібне,
A---B---E---F
Швидко і просто! Тепер ви можете знайти контекст, що стоїть за всіма цими звинуваченими зобов'язаннями.
PS Так, я знаю, пізній пост, але о ну, хтось може знайти його тут і вважати його корисним. (Найімовірніше, мені через 6 місяців, коли я знову переглядаю Google)
commit --amend
абоrebase
випадково осиротів, працюючи з відокремленою ГОЛОВОЮ, скажімо.