git - Bitbucket 警告我的 git repo 太大但我无法确认大文件

标签 git version-control bitbucket bfg-repo-cleaner

Bitbucket 警告我的 Git 存储库超过 1 GB。实际上,在 Repository details 页面中显示它是 1.7 GB。太疯狂了。我一定是在版本控制中包含了大数据文件。我的本地存储库实际上是 10 GB,这意味着至少我一直在使用 .gitignore 在某种程度上成功地将大文件排除在版本控制之外。

接下来,我按照这里的教程https://confluence.atlassian.com/display/BITBUCKET/Reduce+repository+size并尝试删除未使用的大数据。命令 files.git count-objects -v 在我的 repo 的顶层文件夹 返回以下内容:

count: 5149
size: 1339824
in-pack: 11352
packs: 2
size-pack: 183607
prune-packable: 0
garbage: 0
size-garbage: 0

大小包 183607 KB 比 1.7 GB 小得多。我有点困惑。

接下来我下载了BFG Repo Cleaner https://rtyley.github.io/bfg-repo-cleaner并在顶级目录运行命令 java -jar bfg-1.12.3.jar --strip-blobs-bigger-than 100M 以从所有非最新提交中删除大于 100 MB 的文件。但是,BFG 返回了以下消息:

Warning : no large blobs matching criteria found in packfiles 
- does the repo need to be packed?

对 50M 重复相同的结果。

这是否意味着所有大于 50 MB 的文件都在最新提交中?在 Bitbucket 的源代码浏览器中,我查看了包含大型数据文件的文件夹,但这些文件未包含(已成功忽略)。

谁能简要解释一下存储库大小和存储库中存在大文件的困惑根源是什么?

最佳答案

此时您需要查看服务器上的存储库以确定问题出在哪里,并且您可能需要与 BitBucket 技术支持联系。但是您的描述听起来好像您的存储库中有一些可以清理的垃圾。

考虑一下您是否已将大约 500 MB 的文件推送到您的 BitBucket 存储库。现在您意识到了您的错误,并以某种方式(例如 BFG)将其从您的存储库中删除并推送更新后的引用。您远程上的 ref 将更新为指向新的提交,并且您的存储库将不会显示为包含大文件(如果您克隆了存储库,则不会获得大文件)。

但远程不会删除旧提交或该提交中的旧文件。它只会将它与图形断开连接,并且那个大文件将不再“可访问”。事实上,它是符合“垃圾收集”条件的“垃圾”。这会删除大文件,并且服务器上的存储库大小会缩小。

无法要求服务器进行 GC(通过 git 协议(protocol))。 BitBucket 的支持应该能够为您执行此操作:

You'll need to look for us to trigger the gc instead. I guess the best way is to "escalate" it if it is really urgent, and we should be able to get to it immediately. — Bitbucket Support (Dec. 2016)

请注意,这假设您实际上在本地拥有完整的存储库,请确保执行 fetch --all 以确保您在本地没有(可访问的)历史记录的子集。对于 BFG,请确保您已使用 --mirror 选项克隆了您的存储库。

关于git - Bitbucket 警告我的 git repo 太大但我无法确认大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28780164/

相关文章:

git - 基于主 Git 项目创建子项目。

iphone - iPhone 项目中应将哪些文件置于版本控制之下?

git - bitbucket.org : Permission denied (publickey)

linux - 非登录用户的 .ssh/authorized_keys 文件在哪里?

git - 阻止 git 允许我切换具有未提交更改的分支

gitignore 不忽略特定的 bin 文件夹

git - 如何删除 Git 中的非最后一次提交?

visual-studio-2008 - Mercurial 可以集成到 Visual Studio 2008 中吗?

macos - 如何在 Mac 上的 GitHub Desktop 中重置 Bitbucket 密码?

Git 要求输入 repo 所有者密码,而不是队友密码