1. A --> B --> C --> D
  2.  
  3. A --> D
  4.  
  5. git reset --soft HEAD^^^
  6. git add -A
  7. git commit -C HEAD@{1}
  8.  
  9. git reset --hard A # reset current branch to A
  10. git cherry-pick D # transplant commit D here
  11.  
  12. git rebase --onto A C # transplant C..D onto A