Я понимаю, что это довольно старая тема, но так как я нашел этот вопрос, столкнувшись с подобной ситуацией, я мог бы также рассказать, что я использовал в конце.
git checkout FooBar
git rebase -p --onto Foo A
Я пытался использовать имена из исходного вопроса. Обратите особое внимание, что A
означает коммит, помеченный как A в ascii art. Вы, вероятно, использовали бы вместо этого хеш коммита или любой другой способ указать на коммит, где ветви Foo
и FooBar
первоначально разделяются.
Флаг -p
также известен как --preserve-merges
, и он делает в значительной степени то, что говорит.
Обратите внимание, что ветвь Bar
здесь не играет роли, поэтому строка коммитов может быть именованной ветвью или нет - это не имеет значения.