>_ IzzyLab

Практическое задание

Жёсткий сброс до нужного коммита

средне

В репозитории /root/repo три коммита: init (файл file1.txt), second (файл file2.txt) и third (файл file3.txt). Полностью отбрось два последних коммита: ветка main должна снова указывать на коммит init, а файлы file2.txt и file3.txt — исчезнуть из рабочего дерева. Рабочее дерево должно остаться чистым.

Что потренируешь:
  • git
  • git reset
  • --hard
  • рабочее дерево
  • HEAD~2

Разбор темы

Чтобы выбросить и коммиты, и связанные с ними файлы из рабочего дерева, нужен самый жёсткий режим git reset — тот, что синхронизирует под целевой коммит сразу и индекс, и рабочее дерево. Он безвозвратно уничтожает несохранённые правки, так что применять осторожно. Целевой коммит задаётся относительной ссылкой (на несколько шагов назад от HEAD) или его хешем из git log --oneline.

Что проверяется

  1. остался один коммит
  2. лишние файлы удалены
  3. рабочее дерево чистое

Как это выглядит