Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Git: git, reset, revert

Разница между reset и revert

Этот вопрос проверяет понимание различий между двумя важными командами Git для отмены изменений и их практического применения в рабочих процессах.

Короткий ответ

git reset перемещает указатель текущей ветки на конкретный коммит, потенциально удаляя более новые коммиты из истории, и может изменять индекс и рабочую директорию. git revert создает новый коммит, который отменяет изменения указанного коммита, сохраняя при этом всю историю проекта. Reset изменяет историю и опасен для опубликованных коммитов, mientras revert безопасен для общей истории и добавляет новую запись.

Длинный ответ

Reset и revert - две принципиально разные команды Git для управления историей изменений.

git reset - перезапись истории

Reset перемещает указатель текущей ветки на указанный коммит.

Три режима reset

1. --soft - только перемещает указатель

bash

git reset --soft HEAD~1
  • История - удаляет последний коммит

  • Индекс - изменения остаются в staged состоянии

  • Рабочая директория - файлы не изменяются

2. --mixed (по умолчанию) - перемещает указатель и сбрасывает индекс

bash

git reset --mixed HEAD~1
  • История - удаляет последний коммит

  • Индекс - изменения становятся unstaged

  • Рабочая директория - файлы сохраняют изменения

3. --hard - полное удаление изменений

bash

git reset --hard HEAD~1
  • История - удаляет последний коммит

  • Индекс - полностью очищается

  • Рабочая директория - все изменения удаляются

git revert - безопасная отмена изменений

Revert создает новый коммит, который отменяет изменения указанного коммита.

bash

git revert HEAD

Характеристики revert

  • История - добавляет новый коммит

  • Безопасность - не перезаписывает существующую историю

  • Collaboration - безопасен для опубликованных коммитов

Сравнение на практике

Сценарий использования reset

bash

# Локальная работа - сделали несколько коммитов, хотим переделать
git add .
git commit -m "WIP: incomplete feature"
git commit -m "More work"

# Решили объединить коммиты
git reset --soft HEAD~2
git commit -m "Complete feature implementation"

Сценарий использования revert

bash

# Опубликовали коммит с ошибкой в master
git commit -m "Add feature X"
git push origin master

# Обнаружили ошибку - безопасно отменяем
git revert HEAD
git push origin master

Ключевые различия

Безопасность

  • Reset - опасен для опубликованной истории

  • Revert - безопасен для общей работы

Влияние на историю

  • Reset - удаляет коммиты из истории

  • Revert - добавляет новые коммиты в историю

Использование в команде

  • Reset - только для локальных, неопубликованных изменений

  • Revert - идеален для исправления ошибок в общей ветке

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

  • Для локальной работы - используйте reset для переписывания истории

  • Для исправления в master/main - всегда используйте revert

  • Для очистки неопубликованных изменений - reset --hard

  • Для отмены конкретного коммита - revert с указанием хеша

Вывод: Выбирайте reset для локальной переработки неопубликованной истории и revert для безопасного исправления ошибок в опубликованных коммитах. Reset изменяет историю, revert добавляет к ней.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Git

    Git

Ключевые слова

#git

#reset

#revert

Подпишись на React Developer в телеграм