НАЧАЛЬНИКА фиксацию объект моего .git репо был потерян из-за машины аварии:вручную извлекая reflog когда мерзавец reflog терпит неудачу
$ git rev-parse HEAD
1f411c372caab4767638df0b47be5e2f576cb582
$ git reflog
error: object file .git/objects/1f/411c372caab4767638df0b47be5e2f576cb582 is empty
fatal: loose object 1f411c372caab4767638df0b47be5e2f576cb582 (stored in .git/objects/1f/411c372caab4767638df0b47be5e2f576cb582) is corrupt
Оказывается, есть только несколько файлов, которые повреждены, а потому, HEAD commit является одним из них, я не могу найти хэш предыдущего коммита.
Однако мое понимание рефлога - это история всех изменений в HEAD, даже если они недоступны, поэтому я ожидаю, что там будет место в .git, где я могу найти предыдущий хеш, m удивлен reflog не работает.
Есть ли способ сбросить reflog вручную и, возможно, восстановить это легко?
Мне все равно, если я потеряю только последнюю фиксацию (или даже последние несколько коммитов), потому что мой рабочий каталог в порядке. Но я не хочу терять все последние 4 дня с тех пор, как я подтолкнулся к своему серверу.
Если я могу найти правильный алгоритм SHA, я могу восстановить просто с
git checkout -B recovery
и идти на моем веселом пути.
Спасибо!
P.S. Да, я мог бы обрабатывать свой рабочий каталог как просто сквош за последние 4 дня работы, но предпочел бы, если возможно, захватить историю.
ОБНОВЛЕНИЕ. FYI: Как я на самом деле восстановить, используя ответ:
tail .git/logs/HEAD
8030ad73461b75e3ce575d5896a9511f6036e45d 1f411c372caab4767638df0b47be5e2f576cb582 REDACTED 1432014000 -0700 commit: REDACTED
git branch -f recovery 8030ad73461b75e3ce575d5896a9511f6036e45d
echo "ref: refs/heads/recovery" > .git/HEAD