CODING 仓库容量计算机制

仓库额定容量

Coding.net 为不同等级的会员配置了不同大小的 Git 仓库容量,详见 https://coding.net/vip 。

会员等级 仓库额定容量
普通会员 128 M
银牌会员 512 M
黄金会员 1 G
钻石会员 5 G

仓库容量计算机制

Git 仓库不仅存储了 master 分支和正在开发中的 dev 分支的代码文档,还保存仓库中已删除的文件和历史提交记录,所以仓库容量会比开发者 clone 到本地的大。

Coding.net 不建议开发者使用 Git 仓库保存二进制文件,包括不限于压缩包、可执行程序、视频、音乐、图片等。建议使用 Git LFS 功能进行大文件的存储。

仓库超出额定容量

当您的仓库超过了额定容量,您可以付费升级到金牌会员 1 G 或 钻石会员 5G 的额定仓库容量,点击升级

或者 绑定腾讯云账户 升级至 512M 的额定仓库容量。

如何剪裁二进制大文件

Git 仓库中,代码文档本身并不会占用很大空间。如果您不慎将二进制大文件(如,压缩包、可执行程序、视频、音乐、图片等 )推送到 Git 仓库中存储,可以在本地 剪裁仓库二进制文件,重新推送至 清空后的远程仓库,彻底删除文件和历史提交

注意事项

  1. 使用 filter-branch 命令彻底删除大文件,会导致历史提交记录重新,请谨慎使用。
  2. 大文件被彻底删除后,将无法恢复,请谨慎操作。
  3. 受限于服务器 IO 限制,用户仓库将排队进行 GC,每个仓库两周可以进行一次 GC。两周之后您已剪裁的文件占用的空间将被释放。

执行命令和步骤

删除项目中无用的大文件后,该大文件还会顽固地存在于历史提交中。使用 filter-branch 命令可将大文件彻底地从历史提交中删除(以删除文件 bigfile 为例)

$ git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch bigfile' \
  --prune-empty --tag-name-filter cat -- --all
Rewrite 1d92bc51b15c80582cef9cfb27ee056f000590bc (1/2)rm 'bigfile'
Rewrite 4ef010df40a1e81b1f9a11391d63879b649e9690 (2/2)rm 'bigfile'

Ref 'refs/heads/master' was rewritten

注意: filter-branch 会重写历史,使用需谨慎。

执行 filter-branch 后即可将“瘦身”过的本地仓库 push 到清空后的远程仓库如果本地也要做一次清理以达到减小本地仓库容量的目的,可以执行下面的命令:

$ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
$ git reflog expire --expire=now --all
$ git gc --prune=now

注意:执行本操作会丢失 git 仓库中的缓存对象,丢失这些对象后,将无法恢复上一步操作。

 

相关文章