There is no single git command for that. You will have to do some manual work. In your situation:
o (master)
/ o--o (WIP1)
/ /
X--o--o--B--o--o (WIP2)
o--o (WIP3)
You first rebase WIP1 onto master:
git rebase --onto master X WIP1
which will lead to this:
o--o (WIP1)
(master) /
o--o--o--B’
/
/
X--o--o--B--o--o (WIP2)
o--o (WIP3)
If you now run git rebase --onto master X WIP2
, you get this structure:
o--o (WIP1)
(master) /
o--o--o--B’
/
/ o--o--B’’--o--o (WIP2)
/
X--o--o--B--o--o (WIP3)
This is probably not what you want, so now you should rebase WIP2 and WIP3 on B’
:
git rebase --onto B’ B WIP2
git rebase --onto B’ B WIP3
which will lead to this:
o--o (WIP1)
(master) /
o--X--o--o--B’--o--o (WIP2)
o--o (WIP3)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…