2015-12-03 7 views
0

Рассмотрите следующую ситуацию.Git revert catastrophe

У меня есть два филиала: main и main_feature_#1.

  1. Я создал запрос нагрузочный и слитыmain_feature_#1 в main. Я нашел проблему с слиянием и не было выхода - пришлось вернуться это слияние; сделал это локально и толкнул его.
  2. Оформить заказ main_feature_#1 и вернуть один из коммитов.

Теперь, когда я открываю запрос тянуть за main против main_feature_#, единственное обязательство, которое показан последний Revert сделанный на main_feature_#. Локальное слияние от main_feature_#1 до main также показывает то же самое. git diff main main_feature_#1 показывает все изменения.

Однако запрос на растяжение для main_feature_#1 против main показывает все различия для правильного слияния.

Я не знаю, что делать дальше. :(

+0

ли вы вернуться к Revert первым? – Makoto

+0

вы имеете в виду, я должен вернуться к Revert я сделал на 'main' и почему? – p0lAris

+0

Или вы технически сказать, что я никогда не должен был вернулся слияния в Первое место. Просто вернулось что-то в 'main_feature_ # 1', а затем открыло новый запрос на pull. – p0lAris

ответ

0

Это общая проблема с возвратом слияния. Существует несколько способов исправить ее. Самый простой способ - использовать git cherry-pick, чтобы повторно использовать эти коммиты заново, но может быть утомительным в более длительной истории ветвей. все три PARAMS git rebase --onto main_feature_#1 <start of the main_feature_#1> <first commit before the unwanted merge> --interactive.

+0

Это сделало бы больше беспорядка вещей. – Makoto

+0

@Makoto нет если ветка была простой. В противном случае вы всегда можете вернуться обратно. –

+0

См. Ответ @ Makoto в комментариях. Это очень близко к совершенству, и это очень чисто. – p0lAris