отмена случайного слияния без регрессии истории - PullRequest
6 голосов
/ 16 мая 2011

Я сделал что-то глупое и случайно слил ветку темы в свою ветку master, а затем перенес ее в github (куда другие тянули).Просто чтобы удостовериться, что это была совершенно идиотская ошибка, я вытащил ее на свои производственные серверы.

Я опустил голову в позоре на соответствующее время и теперь мне нужно выяснить, как эффективнооткатывать кодовые коммиты при продвижении истории коммитов.

Чтобы получить мой рабочий код для правильной проверки, я запустил git checkout hashoflettersandnumbers, и для этого коммита я хочу, чтобы рабочий HEAD был.

Я запускаю git reset hashoflettersandnumbers и затем git clean, чтобы удалить изменения из этого коммита в будущем, но я не могу заставить этот код быть ГОЛОВОМ ветки master и сделать новый коммит.

1 Ответ

5 голосов
/ 16 мая 2011

Используйте git revert на каждой из ветвей.Это создаст новый коммит, который сохранит вашу ошибку на всю вечность, но вернет вам то же дерево, которое вы имели до слияния.

Например, если 123456 - это коммит слияния ...

$ git checkout master
$ git revert 123456
$ git checkout topic-branch
$ git revert 123456

Предполагается, что это не было «ускоренное слияние».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...