Menu
Coddy logo textTech

Сброс ветки (Reset)

Часть раздела Контроль версий путешествия по Terminal на Coddy — урок 44 из 58.

git reset перемещает указатель текущей ветки на другой коммит. Наиболее распространенное использование — отмена последних коммитов, которыми вы еще не поделились.

git reset --hard HEAD~1

Это перемещает main на один коммит назад и перезаписывает рабочую директорию для соответствия. Коммит, который вы пропустили, больше не доступен из вашей ветки (Git хранит его некоторое время на случай, если вы передумаете, но ожидайте, что он исчезнет).

Существует три варианта сброса (reset):

  • --soft: переместить указатель ветки; сохранить проиндексированные изменения
  • --mixed (по умолчанию): переместить указатель; убрать изменения из индекса, но сохранить рабочие файлы
  • --hard: переместить указатель; также отбросить изменения в рабочих файлах

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

challenge icon

Задание

Средне

Папка содержит doc.md. Инициализируйте репозиторий и создайте три коммита по порядку:

  1. Добавьте doc.md с сообщением Add doc.
  2. Добавьте second в конец doc.md, сделайте коммит с сообщением Second draft.
  3. Добавьте third в конец doc.md, сделайте коммит с сообщением Third draft.

Выполните жесткий сброс (hard-reset) ветки назад к самому первому коммиту, используя HEAD~2. Выведите содержимое doc.md.

Шпаргалка

git reset перемещает указатель текущей ветки на другой коммит. Три варианта:

  • --soft: переместить указатель; сохранить проиндексированные изменения
  • --mixed (по умолчанию): переместить указатель; убрать из индекса, но сохранить рабочие файлы
  • --hard: переместить указатель; отбросить изменения в рабочих файлах
git reset --hard HEAD~1  # отменить последний коммит, отбросить изменения
git reset --hard HEAD~2  # отменить последние 2 коммита

Внимание: Никогда не используйте --hard для коммитов, которые уже были получены другими пользователями.

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Контроль версий