A --> B --> C --> D
A --> D
git reset --soft HEAD^^^
git add -A
git commit -C HEAD@{1}
git reset --hard A # reset current branch to A
git cherry-pick D # transplant commit D here
git rebase --onto A C # transplant C..D onto A