Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Коли використовувати reset, а коли revert?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`git reset`** використовують, коли історію можна переписати, а **`git revert`** - коли переписувати історію не можна. **Ключове:** `reset` стирає коміти з історії, а `revert` зберігає історію і просто додає новий коміт, що скасовує зміни.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Коротко (ідеальна відповідь для співбесіди) - `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` використовують у спільних гілках, тому що він не змінює історію, а додає новий коміт, який скасовує зміни.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.