Введение
В работе разработчика нередко возникают ситуации, когда важные файлы случайно удаляются, а изменения фиксируются в репозитории. Данное испытание имитирует подобный сценарий, проверяя ваше умение работать с историей Git и инструментами восстановления состояния для возврата утерянных данных и приведения проекта в рабочее состояние.
Восстановление утерянных файлов
Перед началом испытания для вас был подготовлен Git-репозиторий в директории ~/project/important-project. В этом репозитории уже есть несколько коммитов, включая создание и последующее случайное удаление двух важных файлов. Вот что вам нужно знать:
- Репозиторий был инициализирован начальным коммитом с файлом
README.md. - Два критически важных файла,
important_algorithm.pyиcrucial_data.txt, были добавлены в следующем коммите. - После этого было сделано еще несколько коммитов с различными изменениями.
- В какой-то момент файлы
important_algorithm.pyиcrucial_data.txtбыли случайно удалены, и это удаление было зафиксировано коммитом. - После случайного удаления был сделан как минимум еще один коммит.
Ваша задача — восстановить удаленные файлы, изучив историю репозитория, и зафиксировать восстановленные файлы новым коммитом.
Задачи
- Изучите историю репозитория, чтобы определить момент удаления
important_algorithm.pyиcrucial_data.txt. - Восстановите состояние репозитория, предшествующее удалению.
- Сохраните оригинальную историю коммитов и создайте новый коммит с сообщением "Recover deleted files".
Требования
- Работайте в директории
~/project/important-project. - Убедитесь, что после восстановления файлы
important_algorithm.pyиcrucial_data.txtприсутствуют в директории. - Последний коммит должен иметь сообщение "Recover deleted files", при этом вся предыдущая история коммитов должна быть сохранена.
Пример
После успешного выполнения испытания команда ls в директории проекта должна показать:
$ ls ~/project/important-project
important_algorithm.py crucial_data.txt README.md
Команда git status должна подтвердить чистое состояние рабочей директории:
$ git status
On branch master
nothing to commit, working tree clean
А команда git log должна вывести ваш новый коммит в самом верху списка:
$ git log --oneline
8876d8b (HEAD -> master) Recover deleted files
9b3525c Update project status
5e6234c Oops, accidentally deleted important files
9de9506 Update algorithm TODO
01c36ae Add crucial data and algorithm
638a98d Initial commit
Резюме
В этом испытании вы столкнулись с типичной для Git ситуацией: случайным удалением файлов. Вы научились:
- Проверять полную историю репозитория, включая действия, которые изменили указатель HEAD.
- Восстанавливать репозиторий до определенного предыдущего состояния, фактически «поворачивая время вспять» в вашем проекте.
- Создавать новый коммит для сохранения восстановленного состояния проекта.
Эти навыки неоценимы для поиска потерянных коммитов, исправления ошибок и поддержания прозрачной истории проекта. Помните: хотя эти инструменты могут спасти вас в критической ситуации, всегда лучше работать аккуратно и делать частые, хорошо документированные коммиты, чтобы минимизировать риски.
Выполнив это задание, вы получили практический опыт работы с мощными инструментами восстановления Git, которые сослужат вам добрую службу в вашей карьере разработчика.



