You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-gitlab模块批量删除指定GitLab分支及代码优化咨询

优化后可实现批量删除的完整代码
import gitlab

# 配置项
TOKEN = "MYTOKEN"
GITLAB_HOST = 'MYINSTANCE' 
GROUP_ID = 6
# dry run模式:True仅预览待删除分支,False执行真实删除
DRY_RUN = True

# 初始化GitLab连接
gl = gitlab.Gitlab(GITLAB_HOST, private_token=TOKEN)
group = gl.groups.get(GROUP_ID, lazy=True)

# 获取组下所有项目(含子组)
projects = group.projects.list(include_subgroups=True, all=True)
matched_count = 0

for project_item in projects:
    # 获取完整项目对象
    project = gl.projects.get(project_item.id)
    # 遍历项目全部分支
    for branch in project.branches.list(all=True):
        if "tobedeleted" in branch.name:
            print(f"匹配到待删除分支:项目[{project.name}] 分支[{branch.name}]")
            if not DRY_RUN:
                branch.delete()
                print(f"已成功删除分支:{branch.name}")
            matched_count += 1

print(f"操作完成,共匹配到{matched_count}个符合条件的分支")
if DRY_RUN:
    print("当前为预览模式,未执行真实删除,确认无误后可修改DRY_RUN为False执行删除")
代码优化说明
  • 移除了无用的os导入,单库单行导入符合Python编码规范
  • 取消了冗余的项目ID收集步骤,直接遍历项目列表操作,减少不必要的API请求,提升运行效率
  • 简化了分支属性读取逻辑,直接调用branch.name即可获取分支名,无需访问底层attributes字典
  • 新增全量分支拉取逻辑,避免分页限制导致遗漏分支
  • 新增dry run预览模式,避免误删生产环境分支
  • 新增匹配结果统计,方便核对操作数量
分支删除功能实现逻辑

匹配到符合条件的分支后,直接调用python-gitlab封装的分支对象delete()方法即可完成删除,无需额外拼接接口参数。

注意事项
  • 运行脚本前请确认使用的访问TOKEN拥有对应项目的分支删除权限
  • 首次运行请保持DRY_RUN = True,核对所有输出的待删除分支完全符合预期后,再修改配置执行真实删除
  • 重要项目操作前建议提前备份关键分支内容,避免数据丢失

内容的提问来源于stack exchange,提问作者Sameer Atharkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:54:04