Right now I'm attempting to slim down a bloated repo by deleting git objects associated with long-deleted binary files in source control. I'm using the BFG repo cleaner, which is succeeding at slimming the repo and leaving the current commit untouched, but I'm struggling with how to orchestrate the migration to the slimmed repo.
For context, all developers work off of forks of the main repo, and only merge changes via PRs. For the migration, I'm thinking to have everyone pull the latest changes from upstream, then run the BFG job, force push, then have everyone re-fork and re-clone.
That much is pretty straightforward, but things are tricky because everyone has history in their own forks of a repo whose history is about to be fundamentally re-written. What I'm struggling with is how to let the devs migrate feature branches from their old forks and clones to their new forks and clones. Everything I've tried (i.e. adding the old repo as a remote and pulling) is bringing over way more history than I want, or no history at all (i.e. cherry-pick); ideally we'd only bring as much history as has been changed in the branches and their commits.
Is there a best practice here?