Была запущена синхронизация изменений Git на рабочем компьютере с удаленным сервером. Именно в этот момент происходит отключение электричества, бесперебойника нет, компьютер отключается.
В последствии выяснилось, что данные не успели все синхронизироваться. Хотя локальный репозиторий этого не показывал. Здесь все выглядело так, будто процесс успешно завершился, изменений для выгрузки больше никаких нет. На самом деле в локальном репозитарии произошел сбой. При новой попытке синхронизации возникала ошибка.
Такое случается у людей. Нетрудно оказалось найти разные обсуждения по теме. Попытался восстановить по рекомендациям, но безуспешно. Может быть и можно было довести дело до конца, но пришла мысль, как проще восстановить другим способом.
kornev@kornev-desktop:~/Webdev/www/new.site123.ru/main$ git fsck --full
error: object file .git/objects/eb/5998a854c9fbe8ee8201b5f8db193b5e8 is empty
error: unable to mmap .git/objects/eb/5998a854c9fbe8ee8201b5f8db193b5e8: Нет такого файла или каталога
error: eb5998a854c9fbe8ee8201b5f8db193b5e8: object corrupt or missing: .git/objects/eb/5998a854c9fbe8ee8201b5f8db193b5e8
Проверка каталогов объектов: 100% (256/256), готово.
Проверка объектов: 100% (13494/13494), готово.
missing blob eb5998a854c9fbe8ee8201b5f8db193b5e8
dangling blob e6ee60f90cbfc1717bb2dc8982d6ceedcffbc9a8
kornev@kornev-desktop:~/Webdev/www/new.site123.ru/main$ rm .git/objects/eb/5998a854c9fbe8ee8201b5f8db193b5e8
rm: удалить защищенный от записи пустой обычный файл '.git/objects/eb/5998a854c9fbe8ee8201b5f8db193b5e8'? yes
kornev@kornev-desktop:~/Webdev/www/new.site123.ru/main$ git fsck --full
Проверка каталогов объектов: 100% (256/256), готово.
Проверка объектов: 100% (13494/13494), готово.
missing blob eb5998a854c9fbe8ee8201b5f8db193b5e8
dangling blob e6ee60f90cbfc1717bb2dc8982d6ceedcffbc9a8
kornev@kornev-desktop:~/Webdev/www/new.site123.ru/main$ git status
fatal: unable to read eb5998a854c9fbe8ee8201b5f8db193b5e8
kornev@kornev-desktop:~/Webdev/www/new.site123.ru/main$ git stash
error: invalid object 100644 eb5998a854c9fbe8ee8201b5f8db193b5e8 for 'resources/views/frontend/layouts/partials/menu_right.blade.php'
fatal: git-write-tree: error building trees
Не удалось сохранить текущее состояние индекса
kornev@kornev-desktop:~/Webdev/www/new.site123.ru/main$ git fsck --full
Проверка каталогов объектов: 100% (256/256), готово.
Проверка объектов: 100% (13494/13494), готово.
missing blob eb5998a854c9fbe8ee8201b5f8db193b5e8
dangling blob e6ee60f90cbfc1717bb2dc8982d6ceedcffbc9a8
Последовательность действий:
- Когда подобное случается, то сразу надо сделать копию каталога с поврежденным репозиторием. Целиком.
- Можете попытаться восстановить поврежденный локальный репозиторий. Ищите в интернете рекомендации по тексту ошибки, которая у вас возникает.
- Я клонировал репозиторий с удаленного сервера себе на компьютер в соседний каталог. Оттуда взял лишь каталог
.git
и заменил им аналогичный каталог в поврежденном репозитории.
Теперь все изменения, которые не успели выгрузиться стали снова показываться. Я повторно их зафиксировал и успешно синхронизировал.