Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що простіше відкотити: merge чи rebase?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Merge** зазвичай простіше відкотити, бо він не переписує історію і додає окремий merge-коміт, який легко скасувати через `revert`. **Ключове:** `rebase` переписує історію, тому його відкат після завершення (особливо після push) складніший і може вимагати reset/reflog і force push.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняЗазвичай **простіше відкотити** `merge`, тому що `merge` **не переписує історію** і (часто) додає **один окремий merge-коміт**, який легко «ревертнути». `rebase` натомість **переписує історію**, і «відкат» частіше означає **повернення гілки до старого стану/коміту**, що вимагає акуратності (особливо якщо вже був push). --- ## Чому merge простіше відкотити ### Якщо merge уже закомічений В історії з'явився окремий merge-коміт `M`. Його можна безпечно скасувати командою: ```bash git revert -m 1 <hash_merge_commit> ``` - Git створить **новий коміт**, який скасує зміни, внесені merge'ем. - Історія залишиться цілою. - Це безпечно для гілок, які вже є в спільному репозиторії. Це улюблена відповідь на співбесіді: «merge відкочується через revert». --- ## Чому rebase складніше відкотити ### Поки rebase триває Якщо rebase зупинився на конфлікті або ти передумав, це легко: ```bash git rebase --abort ``` Це справді просто. ### Але якщо rebase вже завершено У тебе **нові коміти з новими хешами**. «Відкотити» зазвичай означає: - знайти, де гілка була до rebase (часто через `reflog`) - повернути гілку назад (наприклад, `reset`) І тут важливо: - локально це нормально - **якщо ти вже запушив rebase**, доведеться робити **force push**, а це ризик для команди --- ## Підсумок за ситуацією - **Простіше відкотити merge**, особливо в shared-гілках: `revert` безпечний і зрозумілий. - **Простіше «скасувати» rebase, якщо він ще не завершився**: `rebase --abort`. - **Найскладніше** - відкотити rebase *після push*, тому що історія вже переписана і треба діяти акуратно. --- ## Коротке формулювання для співбесіди > **Merge відкотити простіше: він зберігає історію і зазвичай скасовується через** `git revert` **(зокрема merge-коміт). Rebase переписує історію, тому відкат після завершення (і особливо після push) складніший і може вимагати reset/reflog і force push.**Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.