Вы можете переписать историю, используя
git rebase --interactive --preserve-merges <hash before first merge>
Это вызовет ваш текстовый редактор по умолчанию со списком коммитов, включая ваши слияния.Удалите все слияния из списка, который появляется в редакторе и сохраните, затем выйдите.git будет воспроизводить все коммиты, кроме тех, которые вы удалили, переписывая историю.Ваша ветка / topicA будет по-прежнему существовать, поэтому вы можете просто слить ее в грузовик.
Помогает, чтобы во всех слияниях в интерактивном редакторе были слова "Merge ветки", поэтому их легко определить.*
Вот пример текста в редакторе, который скупается после того, как команда выдается в вымышленном хранилище
pick 07c2942 Added "Hello" to README
pick e98e38b Added "There" to README
pick e3d66ad Added "Here" to README
pick 2105946 Merge branches 'master' and 'tmp'
Вы не хотите, чтобы слияние происходило, поэтому просто удалите эту строкуи строка непосредственно перед ней, так как она является частью слияния в этом случае.
pick 07c2942 Added "Hello" to README
pick e98e38b Added "There" to README
Сохраните и выйдите, и git теперь воспроизведет эти коммиты, за исключением слияния.удалите любую строку, и этот коммит будет удален из хранилища.Также вы можете изменить порядок коммитов в любом порядке.Если у вас есть слияния в середине, вы можете вырезать и вставить их до конца.