Rehearse a git history rewrite of a blobless (partial) clone against a local fake origin first
Before rewriting the branches/worktrees of a real partial clone (--filter=blob:none) after a history scrub, run the whole procedure end to end on a throwaway: build a local bare 'fake origin' mirror on the rewrite host, blobless-clone it into mktemp -d on the target machine, recreate the awkward cases (dirty worktree, detached HEAD, path with spaces, lightweight + annotated tags, a branch created after the bundle step, stashes), then run dry run and apply. Lessons: thin bundles fail on blobless clones ('could not fetch from promisor remote'), so ship a self-contained pack (pack-objects --revs --stdout without --thin, verified by index-pack into an empty repo); before moving any ref, check every target with cat-file -e and rev-list --objects --missing=print; refuse on dirty worktrees; stamp every script with a hash of the commit/ref maps so stale scripts refuse to run. Run the rehearsal with the target machine's own git version (macOS ships an older Apple git) and /bin/bash 3.2.