Тур по Git
История и отмена изменений / Урок 3.5

git reset — Отмена изменений

Команда git reset перемещает HEAD (и, при необходимости, область подготовки и рабочую директорию) на другой коммит. Это основной инструмент для отмены коммитов.

Три режима

git reset --soft HEAD~1    # Отменить коммит, оставить изменения подготовленными
git reset --mixed HEAD~1   # Отменить коммит, снять подготовку (по умолчанию)
git reset --hard HEAD~1    # Отменить коммит, отбросить все изменения

Представьте их как уровни «отмены»:

РежимКоммитИндексРабочая дир.
--softОтменаСохранёнСохранена
--mixedОтменаОтменаСохранена
--hardОтменаОтменаОтмена

Синтаксис HEAD~1

  • HEAD~1 — Один коммит до HEAD
  • HEAD~2 — Два коммита до HEAD
  • Или используйте конкретный SHA: git reset --soft abc1234

Попробуйте!

Попрактикуйтесь с режимами reset:

  1. Создайте два коммита:
    • echo "first" > file.txt && git add file.txt && git commit -m "First commit"
    • echo "second" > file.txt && git add file.txt && git commit -m "Second commit"
  2. Мягкий сброс: git reset --soft HEAD~1
  3. Проверьте статус: git status — ваше изменение всё ещё подготовлено!
  4. Закоммитьте заново: git commit -m "Second commit (redo)"
  5. Теперь жёсткий сброс: git reset --hard HEAD~1
  6. Проверьте: cat file.txt — показывает "first", второй коммит исчез

Предупреждение

git reset --hard разрушителен — он безвозвратно удаляет незафиксированные изменения. Всегда убедитесь, что эти изменения вам не нужны, прежде чем использовать его.

--soft и --mixed безопасны — они сохраняют вашу работу, лишь перемещая её между состояниями.

🎯

Цель

Создайте 2 коммита, затем отмените последний с помощью git reset --soft

Terminal
$

No commits yet. Run `git init` and create your first commit.