Как я восстановил папку после `rm -rf app/` с помощью Docker и Git

Катастрофа с rm -rf

Работая над проектом, я случайно выполнил команду rm -rf app/ и удалил папку с исходным кодом. Паника наступила мгновенно: проект ещё не был отправлен в удалённый репозиторий, и я испугался, что потерял все последние изменения файлов. К счастью, у меня были два спасительных варианта: ранее собранный Docker-контейнер и локальные Git-коммиты. В этой статье я расскажу, как я восстановил папку app/ сначала из контейнера, а затем из Git для сверки, и поделюсь командами, которые помогли мне. Если вы попали в похожую ситуацию, это руководство для вас!

Шаг 1: Осознание проблемы

После выполнения rm -rf app/ я понял, что папка с кодом моего Telegram-бота исчезла и локальные файлы пропали. PyCharm в локальной истории показал, что папки была удалена, но к сожалению он такое откатить не может. Значит нужно вытаскивать файлы от туда, где они были до момента удаления, а это:

  • Docker-контейнер, который я недавно собирал и запускал с помощью make local-build. К счастью, я не успел выполнить очистку (make clean), так что контейнер и образ были на месте.
  • Локальный Git-репозиторий с несколькими коммитами, где папка app/ ещё существовала.

Я решил попробовать оба способа восстановления, чтобы вернуть файлы и убедиться в их целостности.

ЧИТАТЬ ДАЛЕЕ …

Основы Git и GitHub

Основы Git и GitHub — это курс, который познакомит вас с основами работы с системой контроля версий Git и сервисом для хостинга IT-проектов GitHub. Вы узнаете, как создавать и управлять версиями своего кода, работать с ветками, разрешать конфликты и многое другое. Курс будет полезен всем, кто хочет улучшить свои навыки разработки и командной работы.

ЧИТАТЬ ДАЛЕЕ …

Система контроля версий Git. Работаем с Git на своём компьютере.

Система контроля версий Git. Инструменты и правила работы с Git.

Тест на закрепление изученного материала в курсе "Система контроля версий Git" в пятом разделе "Инструменты и правила работы с Git".

1. Выберите ветки, которые названы корректно — в соответствии с общепринятыми рекомендациями по именованию веток:

NewsTabAdded
NewsTabAdded34
34NewsTabAdded
news-tab-added
news-tab-added-34
34-news-tab-added

ЧИТАТЬ ДАЛЕЕ …

Система контроля версий Git. Работаем с Git на своём компьютере.

Система контроля версий Git. Сравнение версий и отмена изменений.

Тест на закрепление изученного материала в курсе "Система контроля версий Git" в первом разделе "Сравнение версий и отмена изменений".

1. Что будет выведено в результате выполнения следующей команды? git diff <commit1> <commit2>

Сначала изменения в commit1, а затем — в commit 2
Все изменения, произошедшие между commit1 и commit2, не включая изменения в commit2
Все изменения, произошедшие между commit1 и commit2, не включая изменения в commit1
Все изменения, произошедшие между commit1 и commit2, включая изменения в commit1 и в commit2
Все изменения, произошедшие в проекте после commit1 до commit2 включительно
Все изменения, произошедшие в проекте после commit2 до commit1 включительно

Подсказка:
Команда git diff при указании ей в качестве параметров хешей двух коммитов выводит все изменения, сделанные после первого коммита до второго включительно.

ЧИТАТЬ ДАЛЕЕ …

Система контроля версий Git. Работаем с Git на своём компьютере.

Система контроля версий Git. Командная работа в Git.

Тест на закрепление изученного материала в курсе "Система контроля версий Git" в третьем разделе "Командная работа в Git".

1. Чем различаются команды git checkout -b branch-name и git checkout branch-name?

Ничем, это одинаковые команды
Параметр -b указывает на необходимость создать ветку и уже потом в неё переключиться
Параметр -b указывает на необходимость проверить ветку на актуальность и уже потом в неё переключиться

ЧИТАТЬ ДАЛЕЕ …

Система контроля версий Git. Работаем с Git на своём компьютере.

Система контроля версий Git. Работаем с удалённым репозиторием.

Тест на закрепление изученного материала в курсе "Система контроля версий Git" во втором разделе "Работаем с удалённым репозиторием".

1. В какой последовательности при работе с удалённым репозиторием обычно встречаются следующие команды?

git clone, git push, git pull
git push, git clone, git pull
git clone, git pull, git push
git pull, git push, git clone
git push, git pull, git clone

ЧИТАТЬ ДАЛЕЕ …

Система контроля версий Git. Работаем с Git на своём компьютере.

Система контроля версий Git. Работаем с Git на своём компьютере.

Тест на закрепление изученного материала в курсе "Система контроля версий Git" в первом разделе "Работаем с Git на своём компьютере".

1. Зачем нужны системы контроля версий?

Сохранение промежуточных версий проекта (истории изменений)
Отправка своего кода на сервер
Обеспечение возможности командной работы над проектом
Контроль сохранения работоспособности старых версий проекта
Контроль качества написанного кода

ЧИТАТЬ ДАЛЕЕ …

git@bitbucket.org: Permission denied (publickey).
Заметка

git@bitbucket.org: Permission denied (publickey).

Что-то я давненько ничего не выкладывал на Bitbucket, и вот на днях создав новый репозиторий не смог его себе склонировать. К удивлению получил ошибку «git@bitbucket.org: Permission denied (publickey).» Не помню, чтобы я что-то менял у себя в ключах, но как-то это нужно было исправлять.
И вот, немного по гуглив всё починил.
Для себя нашел такое решение:

ЧИТАТЬ ДАЛЕЕ …