Это не полный ответ, который вы должны будете выяснить, остальное .. но НТН
РЕШЕНИЕ 1:
Если вы нормально с пересмотром hostory - !! на некоторых рабочих процессах это очень плохо .. на некоторых это не так - например, когда у вас есть местная ветка и т. д. но будьте осторожны !!
Вы можете использовать хороший инструмент интерактивного перебазироваться:
git rebase -i HASH_OF_B
Вы увидите наверное что-то вроде этого:
pick H
pick G
pick F
pick D <-- remove this line
pick C
pick A
И вы будете просто удалить те, которые D (надеюсь, она будет работать в этом если у вас есть несколько детей и т. д.) - Будьте очень осторожны, я не уверен, что это будет делать.
РЕШЕНИЕ 2:
git revert C
git revert D
и вы в безопасности - не изменяя истории и т.д ..
Вы должны будете сделать это на обеих ветвях - на ветви F, а также на ветви H - не уверен, что происходит с слияния совершить, если введено любое слияние изменений относительно D ..
Спасибо. Да, я забыл упомянуть, все, что есть на моем местном репо. – msek