Будни разработчика
14.6K subscribers
1.18K photos
337 videos
7 files
2.02K links
Блог Lead JS-разработчика из Хельсинки
Автор: @bekharsky

По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://yangx.top/it_adv

Чат: https://yangx.top/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
加入频道
#заметка дня

Ну что, воспользовался git reset --hard и грохнул половину репозитория, потому что не до конца понимаешь, как оно работает?

«Присаживайся поудобнее и не паникуй», — сказал себе я вчера, грохнув два дня работы моей жены.

Всё, что нам нужно знать в данный момент — что Git писали не идиоты.

Итак, в моём случае я сделал git add :/, чтобы добавить все файлы из каталога. Потом понял, что ошибся, что мне нужны не все, и бахнул git reset --hard.

...и обнаружил, что пара каталогов того. Пропали.

Хороший вопрос, конечно, какого хера Git это делает, но если подумать, то с точки зрения системы контроля версий-то всё ок. Потому проблема на стороне пользователя.

К счастью, Git на каждый чих строит индекс. И обладает средствами работы с этим самым индексом. Включая работу с файлами.

Для этого встроена утилита, название которой удивительно знакомо линуксоидам: git fsck. Что буквально расшифровывается как git file system check.

И вот она-то нам и нужна. Пишем git fsck --lost-found и все наши файлы из предыдущей версии индекса, которые не попали в текущее состояние Git, оказываются в каталоге .git/lost-found/

Да, они там лежат проименованные как хэши, но кого это когда останавливало.

Дальше дело за малым: просмотреть файлы и восстановить.

Мы восстановили все HTML/CSS/JS и даже картинки (с картинками просто: обращайте внимание на бинарные заголовки, там пишется формат).

Но, конечно, используйте мозг почаще. И делайте резервные копии. Тоже почаще.

#git #lost #recover
27👍9🤩3