由于数据量过大,我无法git push to remote。我最大的目录是331MB(总共525MB)但我的.git目录是40GB,主要是因为.git / objects / pack /
详细输出(git push -v)不是很详细(见下文),所以我不知道更多。
Q1。 git push是否有更详细的设置可以帮助我查看具体失败的对象?
Q2。我的.git / objects / pack对于我的总代码/文件大小是否异常大?如果是这样,我该如何减少呢?
> git pull
> git push -v
Counting objects: 40, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (38/38), done.
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
fatal: The remote end hung up unexpectedly
Writing objects: 100% (40/40), 23.49 GiB | 219.65 MiB/s, done.
Total 40 (delta 23), reused 2 (delta 0)
fatal: The remote end hung up unexpectedly
Everything up-to-date
NB。我在Ubuntu 16.04上使用git 2.7.4和bitbucket
答案 0 :(得分:1)
Q1 - 这里没有太多要说的;你的回购对于bitbucket来说太大了。
Q2 - 包文件包含数据库 - 即项目的差异/压缩历史记录。由于很多原因,这可能会相对于您的工作树大小不一。 (例如,有多少历史?什么类型的文件?)也就是说,你的工作树和你的数据库看起来都很大,这让我觉得你正在存储大型二进制文件。 (图片。编译的程序代码 - .jar,.war,.lib,.exe,...)
git本身并不擅长处理大型二进制文件。如果您正在使用.jar或其他依赖库类型文件,请考虑使用构建工具来获取它们,而不是将它们存储在源代码管理中。如果您要存储真正需要成为源树的一部分的二进制资产,请考虑使用git lfs。
您可以使用BFG Repo Cleaner或lfs-migrate等工具重写您的仓库,以便它使用lfs。我已经使用了两者 - 有时候在一起,虽然有一些技巧让他们玩得很好。每个都有其优点和缺点。
和/或者,您可以放弃部分或全部历史记录以节省空间。即使从一个新的仓库开始,如果你有大的二进制资产,使用lfs或找到一种不将它们存储在git中的方法,或者你将很快再次遇到同样的问题。