如何列出并删除GitLab中的所有空仓库?
如何在GitLab中列出并批量清理空仓库
我来分享一下我处理GitLab空仓库的经验,不管是列出还是批量删除都有实用的方法,分两种场景给你讲:
一、列出所有空仓库
方法1:通过GitLab UI可视化筛选
如果仓库数量不多,用UI操作最直观:
- 登录你的GitLab实例,进入顶部导航的项目页面
- 点击页面上方的「筛选」按钮(或者直接用搜索栏右侧的筛选图标)
- 在筛选面板里找到存储大小选项,设置为「等于0」,然后点击「应用筛选」
- 页面就会自动展示所有存储大小为0的空仓库了
方法2:通过GitLab API批量查询
如果空仓库数量较多,或者需要自动化处理,用API更高效:
- 先创建一个个人访问令牌,需要勾选
read_api权限(如果后面要删除的话还需要delete_project权限) - 用
curl结合jq(轻量JSON处理工具,需要提前安装)来筛选空仓库:
这个命令会返回所有空仓库的完整路径(比如# 替换为你的GitLab实例地址和访问令牌 curl --header "PRIVATE-TOKEN: YOUR_ACCESS_TOKEN" "https://gitlab.example.com/api/v4/projects?statistics=true&per_page=100" | jq '.[] | select(.statistics.repository_size == 0) | .path_with_namespace'username/repo-name),方便你核对。
二、批量清理空仓库
方法1:UI批量删除(适合少量仓库)
- 按照上面的方法筛选出空仓库后,点击页面左上角的「批量选择」按钮
- 勾选所有需要删除的空仓库,然后点击顶部的「删除」按钮,确认后即可批量删除
方法2:API批量删除(适合大量仓库)
这个方法适合一次性清理几十个甚至上百个空仓库,步骤如下:
- 先导出所有空仓库的ID到文本文件:
curl --header "PRIVATE-TOKEN: YOUR_ACCESS_TOKEN" "https://gitlab.example.com/api/v4/projects?statistics=true&per_page=100" | jq '.[] | select(.statistics.repository_size == 0) | .id' > empty_repos_ids.txt - 循环读取文件中的ID并执行删除:
while read repo_id; do curl --request DELETE --header "PRIVATE-TOKEN: YOUR_ACCESS_TOKEN" "https://gitlab.example.com/api/v4/projects/$repo_id" echo "Deleted repo ID: $repo_id" done < empty_repos_ids.txt
重要注意事项
- 仓库删除操作是不可逆的!执行删除前一定要反复核对筛选出的仓库,最好先手动检查几个确认是空仓库
- 确保你的访问令牌拥有足够权限:
delete_project是删除仓库的必备权限 - 如果使用GitLab SaaS(gitlab.com),把API地址换成
https://gitlab.com/api/v4/即可
内容的提问来源于stack exchange,提问作者vijay jonathan
相关产品推荐
相关产品推荐

