Как отменить git слияние с конфликтами

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

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

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

Ответ 1

Последний Git:

git merge --abort

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

До версии 1.7.4:

git reset --merge

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

До версии 1.6.2:

git reset --hard

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

Ответ 2

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

git merge --abort

Ответ 3

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

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 гораздо полезнее в повседневной работе.