Here's an illustration of how to move the needed commits to the new repo.
Perhaps if a developer is not a git expert, an expert should do this for him:
Original repo:
m1<-m2<-m3<-m4<--master
New repo:
m1a-m2a-m3a-m4a<--master
m1a-m4a have the large files removed
Developers Repo:
origin/master|
V
m1<-m2<-m3<-m4<-a<-b<-c<--master
a,b,c need to be pushed to the new repo
Step 1: Add and fetch the new history from the new repo
git remote add newRepo <new repo url>
git fetch newRepo
Developers repo:
origin/master|
V
m1<-m2<-m3<-m4<-a<-b<-c<--master<--head
m1a<-m2a<-m3A<m4a<--newRepo/master
Step 2: Create new local branch and cherry-pick or rebase the new commits to it:
git checkout -b newRepo_master newRepo/master
git cherry-pick a b c
Developers repo:
origin/master|
V
m1<-m2<-m3<-m4<-a<-b<-c<--master
newRepo/master|
V
m1a<-m2a<-m3A<m4a<-aa<-ba<-ca<--newRepo_master (local branch)<-head
Step 3: Push new commits to new repo on newRepo's master branch
git push --set-upstream newRepo master
Step 4: (Optional but recommended) Move local master branch
git checkout -B master newRepo_master
git branch -D newRepo_master (delete temporary local branch)
Developers repo:
origin/master|
V
m1<-m2<-m3<-m4<-a<-b<-c
newRepo/master|
V
m1a<-m2a<-m3A<m4a<-aa<-ba<-ca<--master
New repo:
m1a-m2a-m3a-m4a<-aa<-ba<-ca<--master