У вас есть это.
C - FB - FA [branchB]
/
A - B [master]
\
D - E [branchA]
A, B, C, et c - это всего лишь некоторые коммиты. FA и FB представляют коммиты для функции A и функции B.
Вы хотите это.
C - FB [branchB]
/
A - B [master]
\
D - E - FA [branchA]
Есть несколько способов справиться с этим. Вот один из них.
Во-первых, cherry-pick функция A превращается в филиал A. Это скопирует коммит. Могут быть конфликты.
git checkout branchA
git cherry-pick FA
C - FB - FA [branchB]
/
A - B [master]
\
D - E - FA [branchA]
Затем удалите коммит (ы) из branchB с помощью интерактивной перебазировки.
git checkout branchB
git rebase -i master
Подойдет редактор. Удалите строки с ошибочными коммитами, и Git перезапишет оставшиеся коммиты в BranchB поверх мастера.
C - FB [branchB]
/
A - B [master]
\
D - E - FA [branchA]
См. История перезаписи в Git Книге для получения дополнительной информации.