Один быстрый способ, которым я могу думать,
git checkout branch0
Примечание вниз ша цифро совершают по git log
git checkout master
Теперь переименуйте ветвь 0 в ветку
git branch -m branch0 branch1
A--B' master \ D branch1
Теперь удалите branch1
git branch -D branch1
Создать branch0 снова следующим образом. git checkout -b branch0
A--B' - master&branch0
После того, как вышеуказанный командный мастер и ветвь 0 совпадают. Только изменить нам нужно сделать в branch0 это получить коммит D.
git cherry-pick D
Теперь branch0 выглядит следующим образом
A--B' master \ D branch0
Без проверки (короче): 'мерзавец перебазироваться --onto мастер C branch0' – jbaptperez
Спасибо. Я добавил это предложение к ответу. Я также переупорядочил аргументы on и upstream для переустановки в соответствии с вашими (даже несмотря на то, что работы с обратным выполнением выполняются кратким тестом), который соответствует странице git man. – pcrost