Отменить git merge (еще не было отправлено) - PullRequest
39 голосов
/ 10 мая 2011

Затем я просто внес некоторые изменения в одну из моих ветвей функций ("feedback_tab"), извлек "master" и объединил их там. Я действительно хотел объединить их в мою ветку "разработка".

Теперь мастер опередил «origin / master» (его удаленный) на 17 коммитов - я не увеличивал слияние (и не хочу, очевидно). Как я могу вернуть мастер обратно в то же состояние, что и до случайного слияния? Я путаюсь между git revert и git reset с этим материалом.

Я посмотрел в своем журнале Git, и нет записи для слияния с feedback_tab в master. Я бы подумал, что это будет лучшая запись?

Смущен: / любая помощь приветствуется! макс

Ответы [ 4 ]

63 голосов
/ 06 ноября 2014

Чтобы отменить объединение, которое НЕ было выдвинуто:

git reset --merge ORIG_HEAD

Если во время слияния возникает конфликт, лучший способ отменить слияние:

git merge --abort
35 голосов
/ 10 мая 2011

git reset --hard HEAD~17 возвращает вас на 17 коммитов впереди головы мастера. git rebase -i HEAD~17, вероятно, избавляется и от дополнительных коммитов.

12 голосов
/ 10 мая 2011

Взято из git reset

Undo a merge or pull

    $ git pull                         <1>
    Auto-merging nitfol
    CONFLICT (content): Merge conflict in nitfol
    Automatic merge failed; fix conflicts and then commit the result.
    $ git reset --hard                 <2>
    $ git pull . topic/branch          <3>
    Updating from 41223... to 13134...
    Fast-forward
    $ git reset --hard ORIG_HEAD       <4>
4 голосов
/ 27 февраля 2017

Этот, безусловно, будет работать!

git reset --hard HEAD~1 
git init

Первый вернет изменения, которые вы недавно сделали (слияние), второй запустит репо к последнему (следовательно, перенесется к последнему на источнике)

Я пробовал

git reset --merge

, но это не сработало.

...