Как отменить мерзавец слияния с конфликтами
Я на ветке 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 спросит вас об отмене всех изменений, согласитесь