How to move certain commits to be based on another branch in git?
This is a classic case of rebase --onto
:
# let's go to current master (X, where quickfix2 should begin) git checkout master # replay every commit *after* quickfix1 up to quickfix2 HEAD. git rebase --onto master quickfix1 quickfix2
So you should go from
o-o-X (master HEAD) \ q1a--q1b (quickfix1 HEAD) \ q2a--q2b (quickfix2 HEAD)
to:
q2a'--q2b' (new quickfix2 HEAD) /o-o-X (master HEAD) \ q1a--q1b (quickfix1 HEAD)
This is best done on a clean working tree.
See git config --global rebase.autostash true
, especially after Git 2.10.