Eight years later, we have a clean solution with the release of git 2.45
git cherry-pick --empty=drop ${sh1_begin}^..{sh1_end}