Git 删除提交和文件以减少回购规模

Git 删除提交和文件以减少回购规模,git,gitlab,git-commit,Git,Gitlab,Git Commit,我不知道怎么做,所以我想问你。 在GitRepo(gitlab)中,我得到了5个提交:A->B->C->D->E,我总是推送一个文件/文件包含20MB 现在回购有点太大了。我想从这些提交B、C、D中删除提交和文件。 我该怎么办? 我已经做了: git checkout <hash-A> git cherry-pick <hash-E> git branch -f master git checkout master git push -f origin master g

我不知道怎么做,所以我想问你。 在GitRepo(gitlab)中,我得到了5个提交:A->B->C->D->E,我总是推送一个文件/文件包含20MB 现在回购有点太大了。我想从这些提交B、C、D中删除提交和文件。 我该怎么办? 我已经做了:

git checkout <hash-A>
git cherry-pick <hash-E>
git branch -f master
git checkout master
git push -f origin master
git签出
吉特樱桃采摘
git分支-f主机
切换到主分支
git-push-f源主机

git-rebase-i
git-push-f
之后,提交将被删除,但回购的大小与之前相同。
是否有删除提交和大小Repo的选项?

关键是找到存储库跟踪的大文件,然后从历史记录中删除不必要的文件。看,这回答了你的问题吗?请注意,您已经构建了一个新的历史记录,其中
master
选择您在commit
a
上创建的commit
E
副本。额外的提交将原始的
B-C-D-E
链保留在存储库中一段时间,因为Git希望让您在需要时将其取回。很难把它们扔出去!扔掉它们最简单的方法是再次克隆存储库:新克隆不会复制无法访问的提交。另一种方法是耐心等待。默认情况下,不可访问的提交(包括在本例中的
B-C-D-E
链)在30天内保持可获取状态,并在重登录中记住。30天后,手动运行
git gc
将使旧的reflogs过期,然后通过抛出提交来收缩存储库数据库。你可以使用不同的标志使这一切提前发生,但使其提前14天发生是所有这些中最困难的。要做到这一点,请参阅本章末尾的注释。(搜索清单;文档最近变得更长。)
git rebase -i <hash-A>
git push -f