有没有办法通过删除有关旧提交的数据的本地副本来减少repo大小?
类似于如何git clone --depth 5生成仅具有最近提交数据的小型本地克隆.
回购包含数十亿字节的游戏资产,过去曾多次被覆盖.
编辑:我不想只是清除过去的历史; 我希望历史记录与远程程序保持一致,但我不希望旧的提交在本地存储和可用.
遗憾的是,不可能只保留历史上最新的提交并且具有完全可用的存储库.浅拷贝不是完全可用的,因为它不能被提交.
换句话说,由于git将数据保存在对象存储库中的方式,除了从头开始重写历史记录之外,您没有很多选项.
可能最简单的方法是将所有当前游戏资产文件的副本复制到git存储库之外的某个位置,然后git filter-branch按照此处所述使用从历史记录中删除资产,就像它从未存在过一样.最后,将资产复制回正确的位置并再次提交.这将以游戏资产仅出现在最近提交中的方式重写您的历史记录.
但是,它仍然不会回收磁盘空间,直到你执行:
git reflog expire --expire=now --all
git gc --prune=now
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3889 次 |
| 最近记录: |