{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
{{< /details >}}
极狐 GitLab 仓库的大小会显著影响性能和存储成本。由于压缩、维护和其他因素,它在不同实例之间可能略有不同。
有关仓库大小的更多信息,请参阅:
清除仓库历史中的文件
使用此方法从整个 Git 历史记录中删除大文件。
它不适合用于从您的仓库中删除敏感数据,如密码或密钥。提交信息(包括文件内容)会缓存到数据库中,即使在从仓库中删除后仍然可见。要删除敏感数据,请使用 Remove blobs 中描述的方法。
前提条件:
- 您必须安装
git filter-repo
。 - 可选。安装
git-sizer
。
{{< alert type=”warning” >}}
清除文件是一个破坏性操作。在继续之前,请确保您有仓库的备份。
{{< /alert >}}
要从极狐 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
-
-
备份
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 引用。
{{< alert type=”note” >}}
此步骤对于受保护分支和受保护标签会失败。要继续,请暂时移除保护。
{{< /alert >}}
- 等待至少 30 分钟再进行下一步。
- 运行 清理仓库 过程。此过程只清理超过 30 分钟的对象。有关更多信息,请参阅 清理后空间未释放。