Menu
Coddy logo textTech

Git: Прервать слияние

Последнее обновление

Если git merge наталкивается на конфликты и вы предпочитаете отступить, а не решать их, git merge --abort отменяет слияние и восстанавливает вашу ветку ровно в том состоянии, в котором она была до начала. Это чистый аварийный выход из слияния, которое пошло не так.

Уже завершённое слияние отменяется иначе - см. ниже. Попробуйте эти команды в терминальном playground - реальной оболочке в вашем браузере.

git merge --abort отменяет конфликтное слияние и возвращает ветку в состояние до начала merge.

Синтаксис

CommandWhat it does
git merge --abortОтменяет слияние с конфликтами и восстанавливает состояние до слияния
git reset --mergeБолее старый эквивалент - прерывает и сбрасывает слияние
git merge --quitВыходит из слияния, но оставляет рабочее дерево как есть

Отмена уже завершённого слияния

Отличается от прерывания - коммит слияния уже существует.

SituationCommand
Слияние локальное, не отправленоgit reset --hard ORIG_HEAD
Слияние уже отправленоgit revert -m 1 <merge-hash>

Часто задаваемые вопросы о прерывании слияния в Git

Как отменить выполняющееся слияние?
Выполните git merge --abort. Если слияние остановилось из-за конфликтов и вы не хотите их решать, эта команда отменяет всю операцию и возвращает вашу ветку и рабочее дерево ровно в то состояние, в котором они были до начала слияния.
В чём разница между git merge --abort и git reset --merge?
По сути они выполняют одну и ту же задачу - отменяют выполняющееся слияние и восстанавливают состояние до слияния. git merge --abort - современная, специально предназначенная для этого команда; git reset --merge - более старый способ, который всё ещё работает. Для ясности предпочитайте git merge --abort.
Как отменить уже завершённое слияние?
Это не прерывание, поскольку коммит слияния уже существует. Если слияние только локальное, git reset --hard ORIG_HEAD возвращает ветку туда, где она была до слияния - это работает и после fast-forward, где HEAD~1 не сработал бы. Команда отбрасывает незакоммиченную работу, поэтому сначала проверьте git status. Если вы уже отправили слияние, используйте git revert -m 1 <merge-hash>, чтобы обратить его, не переписывая общую историю.
Потеряю ли я другие изменения при прерывании слияния?
git merge --abort восстанавливает состояние непосредственно перед слиянием, поэтому изменения слияния отбрасываются, но ваша собственная закоммиченная работа остаётся нетронутой. Если перед началом слияния у вас были незакоммиченные изменения, сначала закоммитьте их или спрячьте через stash - прерывание восстанавливает состояние коммита до слияния.
Могу ли я попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить git merge --abort в реальной оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс по Git от Coddy также пошагово охватывает слияние и разрешение конфликтов.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ