lok*_*oki 0 git github git-filter-branch git-commit git-rewrite-history
我有一个包含许多大文件(psd、exe、pdf 等)的存储库,每次我提交这些文件的更新时,git .pack 文件都会急剧增长以保留历史记录。如何从历史记录中删除所有大于 1mb 的文件,但将它们保留在存储库中。
另外,是否可以设置特定文件从不存储在历史记录中?
git filter-repo是git 项目推荐的git filter-branch
。
git filter-repo --strip-blobs-bigger-than 1M
Run Code Online (Sandbox Code Playgroud)
较旧的BFG Repo-Cleaner曾经是最流行的工具。
要删除所有大小 > 1 MB 的文件:
$ bfg --strip-blobs-bigger-than 1M my-repo.git
Run Code Online (Sandbox Code Playgroud)
默认情况下,它不会触及您当前的文件。
git filter-branch 有很多陷阱,可能会对预期的历史重写产生不明显的损坏(并且可能会让您几乎没有时间来调查此类问题,因为它的性能如此糟糕)。这些安全和性能问题无法向后兼容地修复,因此不建议使用它。 来源
您可以添加文件,.gitignore
以便它们从一开始就不会被添加,但 Git 无法配置为自动删除它们,因此您需要某种自动执行bfg
或 的挂钩git-filter-repo
。
像这样的工具bfg
适用于罕见的例外情况。理想情况下,您应该首先防止大型二进制文件包含在存储库中。相反,还有许多其他方法可以保留它们,例如将它们添加到 GitHub 版本或根据您的环境将它们上传到包存储库,例如 npm、Maven 存储库或GitHub 包。
归档时间: |
|
查看次数: |
3926 次 |
最近记录: |