Как отменить мерзавец слияния с конфликтами

Я на ветке mybranch1, mybranch2 разветвляется от mybranch1 и изменения были внесены в mybranch2,

Затем, пока на mybranch1, Я сделал git merge --no-commit mybranch2Это показывает, что были конфликты при слиянии.

Теперь я хочу отказаться от всего (merge команда) так что mybranch1 вернулся к тому, что было раньше. Я понятия не имею, как мне поступить об этом.

7 ответов

Последний Git:

git merge --abort

Это попытается восстановить вашу рабочую копию до того состояния, в котором она находилась до слияния. Это означает, что он должен восстановить любые незафиксированные изменения до слияния, хотя он не всегда может делать это надежно. Как правило, вы не должны сливаться с незафиксированными изменениями в любом случае.

До версии 1.7.4:

git reset --merge

Это более старый синтаксис, но он делает то же, что и выше.

До версии 1.6.2:

git reset --hard

которая удаляет все незафиксированные изменения, включая незафиксированное слияние. Иногда такое поведение полезно даже в более новых версиях Git, которые поддерживают вышеуказанные команды.

На самом деле, стоит отметить, что git merge --abort только эквивалентно git reset --merge При условии MERGE_HEAD настоящее. Это можно прочитать в справке git для команды слияния.

git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

После неудачного слияния, когда нет MERGE_HEADнеудачное слияние может быть отменено git reset --merge но не обязательно с git merge --abortТаким образом, они не только старый и новый синтаксис для одного и того же.

Лично я нахожу git reset --merge гораздо полезнее в повседневной работе.

Предполагая, что вы используете последнюю версию Git,

git merge --abort

Если вы используете последнюю версию Git,

git merge --abort

иначе это будет работать в более старых версиях git

git reset --merge

или

git reset --hard

Есть две вещи, которые вы можете сделать сначала отменить слияние командой

git merge --abort

или

вы можете временно перейти в предыдущее состояние фиксации с помощью команды

git checkout 0d1d7fc32 

Поскольку никто не упоминал об этом раньше, если вы получите эту ошибку

      fatal: Could not reset index file to revision 'HEAD'.

при использовании вышеуказанных методов вы можете попробовать добавить файлы (поставить их), а затем вместо фиксации просто выполнитеgit stashвы можете использовать-mфлаг и дайте ему тег, чтобы вы знали, если вам случайно нужно восстановить это последнее состояние, вы можете найти тайник сgit stash list.

Для меня,git reset --mergeиgit merge --abortне удалось с вышеуказанной ошибкой.

Sourcetree

Если вы не фиксируете свое слияние, просто дважды щелкните другую ветку (=checkout), и когда sourcetree спросит вас об отмене всех изменений, согласитесь

Другие вопросы по тегам