Help us learn about your current experience with the documentation. Take the survey.
减小仓库大小
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Git 仓库的大小会显著影响性能和存储成本。 由于压缩、清理维护和其他因素,不同实例的仓库大小可能会有轻微差异。
有关仓库大小的更多信息,请参阅:
从仓库历史中清除文件
使用此方法从整个 Git 历史记录中移除大文件。
此方法不适合从仓库中移除密码或密钥等敏感数据。 提交信息(包括文件内容)会被缓存在数据库中,即使从仓库中移除后仍然可见。 要移除敏感数据,请使用 Remove blobs 中描述的方法。
先决条件:
- 您必须安装
git filter-repo。 - 可选。安装
git-sizer。
清除文件是破坏性操作。在继续操作前,请确保已备份仓库。
要从 GitLab 仓库中清除文件:
-
导出项目,该项目包含您的仓库副本,然后下载它。
- 对于大型项目,您可以使用 Project relations export API。
-
解压并提取备份:
tar xzf project-backup.tar.gz -
使用
--bare和--mirror选项克隆仓库:git clone --bare --mirror /path/to/project.bundle -
进入
project.git目录:cd project.git -
更新远程 URL:
git remote set-url origin https://gitlab.example.com/<namespace>/<project_name>.git -
使用
git filter-repo或git-sizer分析仓库:-
git filter-repo:git filter-repo --analyze head filter-repo/analysis/*-{all,deleted}-sizes.txt -
git-sizer:git-sizer
-
-
使用以下
git filter-repo选项之一清除您的仓库历史:-
--path和--invert-paths用于清除特定文件:git filter-repo --path path/to/file.ext --invert-paths -
--strip-blobs-bigger-than用于清除所有大于例如 10M 的文件:git filter-repo --strip-blobs-bigger-than 10M
更多示例,请参阅
git filter-repo文档。 -
-
备份
commit-map:cp filter-repo/commit-map ./_filter_repo_commit_map_$(date +%s) -
取消设置镜像标志:
git config --unset remote.origin.mirror -
强制推送更改:
git push origin --force 'refs/heads/*' git push origin --force 'refs/tags/*' git push origin --force 'refs/replace/*'有关引用的更多信息,请参阅 Gitaly 使用的 Git 引用。
-
在下一步之前等待至少 30 分钟。