为什么gitlab存储比使用git clone下载的要大?

为什么gitlab存储比使用git clone下载的要大?,git,gitlab,Git,Gitlab,由于旧的未使用的文件,我的回购非常大(1.4GB)。所以我决定和男朋友一起打扫。在一次推送和克隆之后,我本地项目中的一个du-sh给了我70个月,所以没问题 但是,在我的gitlab GUI上,回购仍然非常大(1.3Go),您可以在这里看到: 我曾尝试在“设置”中开始一项家务活,但没有改变。 您知道我如何缩小尺寸吗?您已经完成了GitLab建议中的第一步。下面的步骤来自他们关于如何操作的文档 这将是一个破坏性的行动。您正在重写存储库历史记录 安装 生成一个 从步骤2下载导出 解压缩导出:

由于旧的未使用的文件,我的回购非常大(1.4GB)。所以我决定和男朋友一起打扫。在一次推送和克隆之后,我本地项目中的一个
du-sh
给了我70个月,所以没问题

但是,在我的gitlab GUI上,回购仍然非常大(1.3Go),您可以在这里看到:

我曾尝试在“设置”中开始一项家务活,但没有改变。
您知道我如何缩小尺寸吗?

您已经完成了GitLab建议中的第一步。下面的步骤来自他们关于如何操作的文档

这将是一个破坏性的行动。您正在重写存储库历史记录

  • 安装

  • 生成一个

  • 从步骤2下载导出

  • 解压缩导出:
    tar xzf backup.tar.gz
    这将包含由
    git bundle

  • 从捆绑包克隆存储库的新副本:
    git Clone--bar--mirror/path/to/project.bundle

  • 使用先前安装的git filter repo,清除存储库历史记录中的所有文件。GitLab提供了几个示例命令

     To purge all large files, you will want to use `--strip-blobs-bigger-than`. This example reports files larger than 10 megabytes: 
     `git filter-repo --strip-blobs-bigger-than 10M`
    
     To purge specific files by path, you can combine both `--path` and `--invert-path`:
     `git filter-repo --path path/to/large.mp4` --invert-paths
    
  • project.bundle
    克隆将
    origin
    远程设置为本地bundle文件。这是不需要的,因此请删除此
    源文件
    远程文件,并将其重置到存储库中

     git remote remove origin
     git remote add origin http://gitlab.example.com/<namespace>/<repository>.git 
    
  • 如果有较大的标记版本,还需要强制将更改推送到所有标记。如果您有受保护的标记,则需要先删除标记保护,运行下面的命令,然后重新启用受保护的标记

     git push origin --force 'refs/tags/*'
    
  • 要防止删除的提交的死链接,请运行以下操作:

    git push origin --force 'refs/replace/*'
    
  • 在存储库项目页面中,导航到
    Settings->repository

  • 上传由
    git filter repo
    命令创建的
    commit映射。GitLab将每个文件限制为10M,但如果需要,您可以将其拆分并逐块上传

  • 单击
    开始清理


  • 听起来您已经完成了GitLab建议的第一部分。他们有我建议您查看的关于如何使用的文档。如果这不起作用,请更新问题,详细说明失败的地方。你启用docker注册表图像功能了吗?@Andy,好的,现在可以了!以前,我使用了BFG,它不生成“提交映射”。有了filter repo,我可以在清理过程中使用此文件,而且效果很好。你可以张贴你的答案,这样我就可以标记为已解决。
    git push origin --force 'refs/replace/*'