Как убрать слияние мастера в ветку (используя sourcetree) - PullRequest
0 голосов
/ 13 июня 2019

Я немного испортил свой git-репозиторий. Я работал над несколькими ветками одновременно и сделал слияния, которые в ретроперспективе были действительно плохим решением.

Я работал над ветвями JIRADAPTER-108, JIRADAPTER-109 и JIRADAPTER-104 (см. Прилагаемую историю). JIRADAPTER-108 и JIRADAPTER-109 были исправлениями, которые я разветвлял от master и сливал обратно с master только с одним коммитом соответственно. Чтобы использовать эти изменения, я решил объединить мастер в ветку JIRADAPTER-104, что оказалось плохой идеей!

На первый взгляд я не смог объединить все из ветви JIRADPATER-104 в master, так как слияние foxtrot недопустимо. Это было, как я пытался слить из origin / JIRADPATER-104 (последний зеленый коммит).

Мне удалось объединить правильные изменения в мастер путем объединения последнего коммита до слияния мастера в JIRADAPTER-104 (последний розовый коммит).

Хотя это только косметика, я сейчас пытаюсь избавиться от них для фиксации в ветке JIRADAPTER-104, где я слил в нее мастера (все зеленые коммиты).

Я пытался сбросить до последнего розового коммита: безуспешно.

Может кто-нибудь помочь мне избавиться от этих двух зеленых коммитов, чтобы теги origin / JIRADAPTER-104 и JIRADAPTER-104 были на последнем розовом коммите? Branches

EDIT Используя рабочее дерево, обязательно установите параметр Enable Force Push в Tool > Options > Git.

Тогда рабочий процесс очень похож на предложенный Mlad274 (большое спасибо за это):

  1. Нажмите на коммит, который должен быть последним в ветке
  2. Из контекстного меню выберите Reset current branch to this commit
  3. Нажмите (выберите Force Push внизу меню`)

1 Ответ

2 голосов
/ 13 июня 2019

Поскольку вы знаете коммит, который хотите, просто заставьте ветку указывать на него.

  1. git checkout JIRADAPTER-104
  2. git reset --hard <COMMIT-ID>
  3. git push -f
...