Как удалить слияние мастера с веткой (используя исходное дерево)

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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ Используя рабочее дерево, обязательно установите параметр Enable Force Push под Tool > Options > Git.

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

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

610
1

Ответ:

Решено

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

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