Выбор ответа Junior Git спрашивают часто обновлено

Как отменить коммит в общей ветке

Вопрос

Коммит с багом уже в main на сервере, после него коллеги запушили ещё несколько коммитов. Как правильно отменить именно этот коммит?

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

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: git revert <hash и обычный push. revert создаёт новый коммит с обратными изменениями.

Варианты ответа

  1. git revert <hash> и обычный pushправильный ответ
  2. git reset --hard <hash>~1 и git push --force
  3. git commit --amend и push
  4. Удалить коммит через git rebase -i и git push --force

Разбор

revert создаёт новый коммит с обратными изменениями. История не переписывается, коллегам не нужно ничего чинить.

  • reset --hard на коммит до бага выкинет и все коммиты коллег после него, а force push перепишет общую историю.
  • --amend меняет только последний коммит, а он чужой и уже не тот.
  • rebase -i с удалением коммита тоже переписывает общую историю и требует force push.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.