Отменить слияние git (еще не было запущено)

#git #merge #revert

#git #слияние #отменить

Вопрос:

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

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

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

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

Комментарии:

1. @myself: О боже, о боже, надо было прочитать FAQ: «программные средства, обычно используемые программистами».

Ответ №1:

Чтобы отменить слияние, которое НЕ было запущено:

 git reset --merge ORIG_HEAD
  

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

 git merge --abort
  

Комментарии:

1. спасибо, это очень понятно и соответствует сути вопроса. это тоже работает. =)

2. Это помогло мне! Спасибо

3. Это git reset --merge HEAD~1 помогло мне.

Ответ №2:

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

Комментарии:

1. Возможно, вы захотите использовать reset --merge . Это делает то же самое, если слияние было единственным, что произошло, но если у вас были локальные изменения (в файлах, не затронутых слиянием), это оставляет их на месте, вместо того, чтобы уничтожать их, как это делает --hard .

2. Также можно было бы сделать git reset --hard origin/master

3. @Jefromi — ах да, буду иметь это в виду в следующий раз. Спасибо!

4. @Karl — я так понимаю, это просто говорит о том, что «тогда сделайте текущую ветку копией origin / master»?

5. @Max: Я бы сказал «сделать так, чтобы текущая ветвь указывала на тот же коммит, что и origin / master (и перетащить индекс и рабочее дерево вместе с ним)». Но да, это в значительной степени копия.

Ответ №3:

Взято из 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:

Это наверняка сработает!

 git reset --hard HEAD~1 
git init
  

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

Я пытался

 git reset --merge
  

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