以下是如何将所需提交移至新存储库的说明。
也许如果开发人员不是 git 专家,那么专家应该为他做这件事:
原始回购:
m1<-m2<-m3<-m4<--master
新仓库:
m1a-m2a-m3a-m4a<--master
m1a-m4a have the large files removed
开发者回购:
origin/master|
V
m1<-m2<-m3<-m4<-a<-b<-c<--master
a,b,c need to be pushed to the new repo
第 1 步:从新存储库中添加和获取新历史记录
git remote add newRepo <new repo url>
git fetch newRepo
开发者回购:
origin/master|
V
m1<-m2<-m3<-m4<-a<-b<-c<--master<--head
m1a<-m2a<-m3A<m4a<--newRepo/master
第 2 步:创建新的本地分支并对其进行挑选或重新提交新的提交:
git checkout -b newRepo_master newRepo/master
git cherry-pick a b c
开发者回购:
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
第 3 步:将新提交推送到 newRepo 的主分支上的新仓库
git push --set-upstream newRepo master
第 4 步:(可选但推荐)移动本地 master 分支
git checkout -B master newRepo_master
git branch -D newRepo_master (delete temporary local branch)
开发者回购:
origin/master|
V
m1<-m2<-m3<-m4<-a<-b<-c
newRepo/master|
V
m1a<-m2a<-m3A<m4a<-aa<-ba<-ca<--master
新仓库:
m1a-m2a-m3a-m4a<-aa<-ba<-ca<--master