Skip to main content

Коли використовувати reset, а коли revert?

Коротко (ідеальна відповідь для співбесіди)

  • git reset - коли можна переписати історію
  • git revert - коли переписувати історію не можна

git reset - змінити історію

git reset переміщує вказівник гілки назад і тим самим змінює історію комітів.

Приклад:

bash
git reset --hard HEAD~1

Що відбувається:

  • останній коміт зникає з історії гілки
  • історія «наче його й не було»

Коли використовувати reset

  • локальні коміти
  • гілка ще не запушена
  • ти працюєш один

Типові кейси:

  • випадковий коміт
  • коміт зі сміттям
  • потрібно «відкотитися і забути»

Небезпечно:

  • у спільних гілках
  • після push

git revert - скасувати через новий коміт

git revert НЕ змінює історію, а додає новий коміт, який скасовує зміни попереднього.

Приклад:

bash
git revert HEAD

Що відбувається:

  • старий коміт залишається в історії
  • з'являється новий коміт із зворотними змінами

Історія виглядає так:

A --- B --- C --- D (revert C)

Коли використовувати revert

  • публічні гілки (main, develop)
  • коміти вже запушені
  • командна робота

Це безпечний спосіб відкату.


Ключова різниця (обов'язково проговорити)

reset стирає коміти з історії, revert зберігає історію і просто додає скасування.


Таблиця для наочності

Критерійresetrevert
Змінює історіюТакНі
Видаляє комітиТакНі
Додає новий комітНіТак
Підходить для public гілокНіТак
Небезпечний при pushТакНі

Часта помилка кандидатів

  • «reset і revert - це одне й те саме» - неправильно
  • «revert видаляє коміт» - неправильно
  • revert нічого не видаляє

Коротка відповідь для співбесіди

git reset використовують для відкату локальних, ще не опублікованих комітів, оскільки він переписує історію. git revert використовують у спільних гілках, тому що він не змінює історію, а додає новий коміт, який скасовує зміни.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.