Использование git cherry-pick
git rebase
это git cherry-pick
на стероидах.
Если у вас есть только несколько коммитов для перемещения: вы можете использовать git cherry-pick
, чтобы выбрать их один за другим.
# move back to B
git checkout B
# start a branch here, and use it as the active branch
git checkout -b wip
# cherry-pick the commits you want to have
git cherry-pick D
git cherry-pick E
# if all went well : move the 'topic' branch to the current branch :
git checkout topic
git reset --hard wip
# delete the temporary 'wip' branch
git branch -d wip
Использование git rebase
Как упоминалось в комментариях: git rebase
может использовать дополнительные параметры для перемещения только диапазона коммитов.
Вы можете сделать то же самое, что и в приведенной выше последовательности cherry-pick
, используя:
git rebase --onto B master topic
Дополнительное примечание: git rebase -i
git rebase
также имеет флаг --interactive|-i
:
git rebase -i --onto B master topic
С флагом -i
: прежде чем что-либо делать, git откроет для вас текстовый редактор, где будут перечислены все перебазированные коммиты.
Этот шаг имеет очевидное преимущество, поскольку показывает вам, что будет применено (до фактического применения), а также описывает больше действий, чем просто «выбор этой фиксации».
Вы можете поискать в Интернете более подробные руководства по git rebase -i
, вот одно из них:
Git Interactive Rebase, Squash, Amend и другие способы перезаписи истории (thoughtbot.com)
person
LeGEC
schedule
08.11.2019
git rebase --onto B --root master
должно работать. (просто используйте--onto A --root B
при перемещении с B на A). - person Joachim Sauer   schedule 08.11.2019git rebase master topic --onto B
. - person alfunx   schedule 08.11.2019