Коли використовувати 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зберігає історію і просто додає скасування.
Таблиця для наочності
| Критерій | reset | revert |
|---|---|---|
| Змінює історію | Так | Ні |
| Видаляє коміти | Так | Ні |
| Додає новий коміт | Ні | Так |
| Підходить для public гілок | Ні | Так |
| Небезпечний при push | Так | Ні |
Часта помилка кандидатів
- «reset і revert - це одне й те саме» - неправильно
- «revert видаляє коміт» - неправильно
- revert нічого не видаляє
Коротка відповідь для співбесіди
git resetвикористовують для відкату локальних, ще не опублікованих комітів, оскільки він переписує історію.git revertвикористовують у спільних гілках, тому що він не змінює історію, а додає новий коміт, який скасовує зміни.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.