#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
но это не сработало.