Как отменить фиксацию git и нажать, сбросить для слияния

Вот моя текущая ситуация. Я объединил ветку со своей веткой live и отправил ее в удаленный репозиторий. Но возникла проблема с кодом в этой ветке. Я хочу вернуть этот live обратно к предыдущему коммиту, который оказался еще одним слиянием с веткой live. Как бы я это сделал?

Я не совсем понимаю разницу между git revert reset и rebase и не уверен, какой из них подходит в данном случае.


person BlobbityBloop    schedule 19.03.2020    source источник
comment
вы можете использовать git revert проверить этот git-revert   -  person ROOT    schedule 19.03.2020
comment
Я попробовал это - я запустил git revert merge-where-I-messed-up и получил ошибку is a merge but no -m option was given.   -  person BlobbityBloop    schedule 19.03.2020
comment
он запрашивает сообщение фиксации, просто добавьте -m "COMMIT_MESSAGE" заменить COMMIT_MESSAGE текстовым сообщением для фиксации, поскольку отмена изменения будет рассматриваться как новая фиксация в вашей истории git.   -  person ROOT    schedule 19.03.2020
comment
Я пытался запустить git revert 1a2b3c -m "Revert to before issue", но получаю сообщение об ошибке error: switch m' ожидает числовое значение`   -  person BlobbityBloop    schedule 19.03.2020
comment
Может быть глупый вопрос - но должен ли я возвращаться к коммиту, где произошла ошибка, или объединяться до того, как произошла ошибка?   -  person BlobbityBloop    schedule 19.03.2020
comment
извините, мой плохой параметр -m запрашивает родительскую фиксацию, проверьте здесь, попробуйте использовать -m 1 это вернется к одному предыдущему коммиту.   -  person ROOT    schedule 19.03.2020
comment
@Ma'mounothman Спасибо! Это помогло   -  person BlobbityBloop    schedule 19.03.2020
comment
Gald, чтобы помочь, я добавлю это как ответ, на всякий случай кому-то это нужно!   -  person ROOT    schedule 19.03.2020
comment
Отвечает ли это на ваш вопрос? git вернуться ‹хэш› не разрешен из-за слияния, но не указана опция -m   -  person phd    schedule 19.03.2020
comment
stackoverflow.com/   -  person phd    schedule 19.03.2020


Ответы (2)


не совсем понимаю разницу между git revert reset и rebase

Ну, вы могли бы использовать любой из них. Но поскольку вы уже нажали, использование revert — единственный «хороший» способ сделать это, если у вас есть другие люди, работающие над одним и тем же репо.

Что касается того, как применить возврат:

git revert -m 1 <merge commit hash>

Обратите внимание, что вам нужна опция -m, потому что коммиты слияния по сути являются коммитами с указателями на 2 родительских коммита и:

«Обычно вы не можете отменить слияние, потому что вы не знаете, какую сторону слияния следует считать основной линией. Этот параметр указывает номер родительской линии (начиная с 1) основной линии и позволяет отменить изменение относительно указанного родителя. "

https://git-scm.com/docs/git-revert#Documentation/git-revert.txt

person marblewraith    schedule 19.03.2020