2016-03-09 5 views

ответ

0

Один быстрый способ, которым я могу думать,

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

4

Используйте --onto аргумент мерзавца перебазироваться, который изменяет исходные условия, которые git replays работают.

git checkout branch0 

В этом состоянии вы все равно должны видеть C в своей истории GIT IIUC.

git rebase --onto B' C 

Это означает «взять все коммиты в моей текущей ветви, так как совершать C (В вашем случае тот только D) и играть в банк наверх B '»

Вы также можете использовать дополнительный <branch> аргумент делать как проверки и перебазироваться сразу:

git rebase --onto B' C branch0 
+0

Без проверки (короче): 'мерзавец перебазироваться --onto мастер C branch0' – jbaptperez

+0

Спасибо. Я добавил это предложение к ответу. Я также переупорядочил аргументы on и upstream для переустановки в соответствии с вашими (даже несмотря на то, что работы с обратным выполнением выполняются кратким тестом), который соответствует странице git man. – pcrost

Смежные вопросы