Проверка git reflog
на наличие записи об удалении
На этом этапе мы рассмотрим команду git reflog
, которая является мощным инструментом для восстановления потерянных коммитов (commits) или веток. reflog
(журнал ссылок) записывает обновления вершин веток и других ссылок в локальном репозитории. Это означает, что он регистрирует почти все изменения, которые вы вносите в репозиторий, включая коммиты, слияния (merges), перебазирование (rebases) и даже удаление веток.
Сначала убедитесь, что вы находитесь в каталоге проекта:
cd ~/project/my-time-machine
Теперь создадим новую ветку, которую мы удалим позже. Это позволит нам найти запись об удалении в reflog
.
git branch feature/new-feature
Эта команда создает новую ветку с именем feature/new-feature
, которая указывает на текущий коммит. Убедимся, что она существует:
git branch
Теперь вы должны увидеть обе ветки:
* master
feature/new-feature
Теперь удалим ветку feature/new-feature
с помощью флага -d
, который представляет собой "безопасное" удаление (он предотвращает удаление, если в ветке есть неслитые изменения).
git branch -d feature/new-feature
Вы должны увидеть вывод, подтверждающий удаление:
Deleted branch feature/new-feature (was <commit-id>).
Замените <commit-id>
на фактический идентификатор коммита, показанный в вашем терминале.
Теперь проверим reflog
, чтобы увидеть, была ли запись об удалении сохранена.
git reflog
Вывод покажет историю действий. Вы должны увидеть запись, связанную с удалением ветки, похожую на следующую (точный вывод может отличаться):
<commit-id> HEAD@{0}: branch: deleted feature/new-feature
<commit-id> HEAD@{1}: branch: Created from <another-commit-id>
... (other reflog entries)
Запись в reflog
HEAD@{0}: branch: deleted feature/new-feature
указывает, что ветка feature/new-feature
была удалена. HEAD@{0}
относится к самому последнему действию. Это показывает, что даже если ветка исчезла из списка git branch
, запись об ее удалении сохраняется в reflog
, что позволяет потенциально восстановить ее.
Понимание работы git reflog
является важным, так как он действует как страховой парашют. Если вы случайно удалите ветку или потеряете коммиты из-за перебазирования или другой операции, reflog
поможет вам найти идентификатор коммита, необходимый для восстановления вашей работы.