git diff-tree --stat $(cat "$DOTEST"/head)..HEAD
        } &&
        {
+               test -s "$REWRITTEN_LIST" &&
                git notes copy --for-rewrite=rebase < "$REWRITTEN_LIST" ||
                true # we don't care if this copying failed
        } &&
 
                test -d "$REWRITTEN" || test -n "$NEVER_FF" || skip_unnecessary_picks
 
+               output git checkout $ONTO || die_abort "could not detach HEAD"
                git update-ref ORIG_HEAD $HEAD
-               output git checkout $ONTO && do_rest
+               do_rest
                ;;
        esac
        shift