首页 > 其他分享 >删除名字含有特定前缀的git仓库分支

删除名字含有特定前缀的git仓库分支

时间:2022-10-03 15:34:03浏览次数:46  
标签:git 前缀 仓库 cmd filter prefix user branch

我想保留一个仓库中以特定字符串为前缀的分支,还想按照commit时间保留同一前缀的指定数量的分支,删除分支的脚本如下:

#!/usr/bin/env python
#-*- coding:utf8 -*-
#coding:utf-8

import os

user_prefix = ["swh", "hzz", "sxwang", "junfeng", "fsh", "sxl", "chenwei", "weiyang", "chiyang", "smj", "hyc", "zmh", "hsy", "xsk", "zzh","dasituer", "kjq", "shuolin", "zc", "lll", "lhy"]
reserve_prefix = ["oushudb", "hawq"]
branch_save_num = 2
output_file = '/tmp/delete_cmd'
        

if __name__ == '__main__':
    fp = open(output_file, "w")
    if os.system("git fetch --prune"):
        print("Should in git repository.")

    lines = []
    # get all branch to be deleted belonging to users
    for user in user_prefix:
        cmd = "git for-each-ref refs/remotes/origin/{}* --format=\'%(committerdate:short) %09 %(refname:short)\' | sort -k1,1r".format(user)
        branchs = os.popen(cmd)

        delete_stat = "git push origin :"
        num = 0
        for branch in branchs:
            if len(branch.strip("\n")) == 0:
                continue
            if num >= branch_save_num:
                lines.append(delete_stat + branch.split("\t")[1].split("/")[1])
            num += 1

    # get all branch not in user list and reserve list
    filter = "HEAD\|"
    for user in user_prefix:
        filter += user + "\|"
    for reserve in reserve_prefix:
        filter += reserve + "\|"
    filter = filter[:len(filter)-2]
    cmd = "git for-each-ref refs/remotes/origin/ --format=\'%(committerdate:short) %09 %(refname:short)\' | grep -v \'{}\' | sort -k1,1".format(filter)
    branchs = os.popen(cmd)
    for branch in branchs:
        lines.append(delete_stat + branch.split("\t")[1][8:])
    
    fp.writelines(lines)
    fp.close()

标签:git,前缀,仓库,cmd,filter,prefix,user,branch
From: https://www.cnblogs.com/huasyuan/p/16750591.html

相关文章

  • Git版本控制-修改丢失-恢复方案
    1.使用Git版本控制进行回滚界面模式使用git窗口右键对应的版本然后点击resetf命令模式gitrelog//显示版本记录gitreset--hardversionId//回退到对应版本......
  • JeeWMS仓库管理系统(移动端+分析+物流管理)
    源码地址:https://gitee.com/erzhongxmu/JEEWMS(如有侵权请及时联系博主删贴)本WMS基于JAVA的仓库管理系统(支持3PL(三方物流)和厂内物流),包含PDA端和WEB端,功能涵盖WMS,OMS,BMS(计......
  • Git操作手册【程序员必备手册】
    ......
  • Git之常见工程、应用、学习错误及安装问题
    Git之常见工程、应用、学习错误及安装问题​​什么是wiki(多人协作的写作系统)​​​​Git使用​​​​GitHub上传时,项目在已有文档时直接push出现错误解决方案​​......
  • 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上
    @目录概述定义工作原理主要组件核心概念环境准备概述安装Kubekey创建K8S安装K9SOpenLB安装ArgoCD安装ArgoCDCLI从Git库中创建一个应用程序概述定义ArgoCD官网地址h......
  • git安装与配置
    git下载配置账号信息#gitconfig--globaluser.name"xxx"#gitconfig--globaluser.email"[email protected]"#ssh-keygen-trsa-C"[email protected]"到git仓......
  • git命令行记录
    gitinit:在项目所在的目录输入初始化git仓库gitremoteaddoriginhttps://github.comxxxxxxx:指定要提交的远程仓库地址gitadd.:注意add与‘.’之间有一个空格,此处为......
  • git回退到某个提交
    git是一个分布式版本控制软件,分布式版本库的做法使源代码的发布和交流都极为方便,因此有不少用户都在使用git。最近小编也正在学习git这款软件,发现要想熟练运用git,学会git中......
  • Git基础操作
    参考博客:Git基础操作-强哥不强-博客园(cnblogs.com)拉取代码使用clone复制远程仓库[email protected]:chen-LinQiang/my-notes.git在已有仓库中拉取代......
  • 学会 Git 01:Git 入门
    Git的数据库Git是一个分布式版本管理系统,可以在任何时间点将文件的状态作为更新记录保存起来。Git有以下两种数据库:远程数据库:有专有的服务器,可多人共享本地数据库......