Изучение системы контроля версий Git – важный этап для любого разработчика. Этот урок посвящен отмене действий и возврату к предыдущим версиям проекта.
Создание тестового проекта
Для демонстрации создадим простой проект:
- Создадим файл index.html с базовой HTML-структурой.
- Создадим папку css и внутри неё файл style.css со следующим стилем: background: red;.
- Инициализируем Git репозиторий: git init.
- Добавим файлы в индекс: git add ..
- Зафиксируем изменения: git commit -m "Добавлены index.html и style.css".
Проверим историю коммитов командой git log —oneline. На данном этапе история будет простой.
Для дальнейшей демонстрации изменим содержимое index.html, добавив новый заголовок «New Title». Затем добавим и зафиксируем изменения: git add index.html, git commit -m "Изменен заголовок в index.html". Снова проверим историю коммитов с помощью git log —oneline.
Просмотр и возврат к предыдущим версиям
Команда git checkout позволяет просмотреть проект на момент определенного коммита. Например, для просмотра проекта на момент первого коммита (добавления файлов index.html и style.css) скопируем его идентификатор (hash) и выполним команду: git checkout <hash_первого_коммита>. Заголовок страницы в браузере отобразится как «Document», так как изменения заголовка были внесены в следующем коммите.
Важно помнить: git checkout предназначен только для просмотра. Изменения, внесенные в этой версии, не сохранятся. Для возврата к последней версии проекта выполним команду: git checkout master. Для возврата к конкретному коммиту можно использовать git checkout <hash_коммита> и затем зафиксировать изменения командой git commit -m "Возврат к коммиту <hash_коммита>".
Отмена коммитов
Рассмотрим команды для отмены коммитов:
- git revert <hash_коммита>: Отменяет действия конкретного коммита, создавая при этом новый коммит. Это предпочтительный метод, так как он оставляет полную историю изменений. Выполнив эту команду, вас перенаправит в редактор vim, где необходимо нажать Esc, затем :wq и Enter для сохранения и выхода.
- git reset <hash_коммита>: Удаляет коммиты после указанного хэша. Использовать с осторожностью! git reset —hard <hash_коммита> удаляет коммиты и возвращает файлы к состоянию указанного коммита.
git reset – более радикальная команда. Она удаляет коммиты, но файлы остаются изменёнными. В случае использования git reset, а затем просмотра истории коммитов (git log —oneline), мы увидим, что коммит отменён, но файлы сохранили изменения из удалённого коммита. Это может привести к путанице. Для полного удаления коммита с возвратом файлов к предыдущему состоянию необходимо использовать git reset —hard.
В этом уроке мы рассмотрели несколько команд Git для отмены действий и возврата к предыдущим версиям проекта: git checkout, git revert и git reset (включая вариант —hard). Правильное использование этих команд позволяет эффективно управлять историей проекта и исправлять ошибки. Важно понимать различия между этими командами, чтобы избежать непредвиденных последствий.