git - 当存储库已经非常接近 2GB 时,如何从所有 bitbucket git 历史记录中删除二进制文件?

标签 git bitbucket bfg-repo-cleaner

Bitbucket git 存储库的大小限制为 2GB,现在我有一个存储库(我们称之为 bigsize 存储库),由于存在大量二进制文件(扩展名为 dllmsm 的文件)。它如此接近限制,我担心涉及二进制文件的提交操作会使大小超过 2GB,因此提交将失败并且无法继续。

现在,如何最好地减少 bigsize 仓库的大小?

我正在考虑使用 LFS feature ,但是,LFS 空间有 1GB 限制,我担心这不足以使用此存储库(因为存储库大小的大部分来 self 想要存储在 LFS 中的二进制文件)。

所以我正在考虑从存储库和历史记录中删除所有二进制文件(我不介意从源代码管理中丢失它们,因为我将它们放在本地驱动器上),考虑到如何最好地做到这一点我的 bigsize 存储库的当前大小?

我的攻击计划:

  1. 确保对于大型存储库上的所有分支(是的,我在这个巨大的存储库上有多个分支),我已删除所有二进制文件(通过提交 specifies *.dll in gitignore and use git rm -rf -cached command 的提交)。这是必需的,因为“By default the BFG doesn't modify the contents of your latest commit on your master (or 'HEAD') branch, even though it will clean all the commits before it.
  2. 然后使用 BFG delete-files command “重写历史”,从而减少存储库的大小。

该方法适用于非常接近 2GB 的存储库吗?我担心在第 1 步,当我使用 git rm 时,它会添加到历史记录中并将存储库大小推至超过 2GB,从而失败。

重要细节:

  1. 我是该存储库的唯一作者
  2. 现在我有多个活跃分支。纵观历史,有多个分支 merge 到主分支
  3. 我不使用存储库进行讨论或代码审查,甚至不使用标签。我只是将它用作单个分支,偶尔进行分支和 merge

最佳答案

git filter-branch or BFG已经过时了

对于 Git 2.22 或更高版本,请使用 git filter-repo :

git filter-repo --path your/big/file --invert-paths

或者:

git filter-repo --strip-blobs-bigger-than 10M

关于git - 当存储库已经非常接近 2GB 时,如何从所有 bitbucket git 历史记录中删除二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62186378/

相关文章:

java - Intellij IDEA : Impossible to commit files: 'utf8' codec can't decode byte 0xcc in position 9

git - 清理 git 存储库 BFG Repo-Cleaner --- 我推送后 repo 大小仍然很大

git - 使用 Git 自动部署 - 无法运行接收后 Hook

git - Control Freak : Commit rejected. Bitbucket 中不允许 Foxtrot merge

Git 忽略 gitconfig?

docker - Docker Hub-链接到Bitbucket的自动构建

git - 如何使用 BFG repo cleaner 删除一个文件夹/目录?

Git BFG 追溯启用 LFS - protected 提交问题

git - .gitconfig 错误

git - 如何使用git从两台不同的机器进行提交