删除远程已经删除的分支

文章介绍了一个Python脚本`del_gone_branch.py`,用于在执行git服务器上的代码合并并删除远程分支后,自动化清理本地已无对应的分支。脚本通过正则表达式匹配git`branch-vv`命令的输出,识别出状态为gone的分支并执行删除操作。更新后的正则表达式支持包含中划线的分支名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git服务器上合并代码后,远程的分支一般删除了,这时候本地的分支需要自己删除,有时候分支用的多,会攒一大堆这样的本地分支。

写了一个del_gone_branch.py:

import re
import fileinput
import os

def main():
    pattern = re.compile(r'\s*(\w+)\s+[^\[]+\[[^:]+:\s*gone\].*$')
    with fileinput.input() as f_input:
        for line in f_input:
            print(line, end='')
            ret = pattern.match(line)
            if ret:
                print("--------")
                os.system("git br -D "+ret.group(1))
            else:
                print("++++++++")


if __name__ == '__main__':
    main()

使用:

git branch -vv | python del_gone_branch.py

git branch -vv 的输出类似如下:

  branch_xxxxxxx      3bf30ecd0 [origin/branch_xxxxxxx: gone] cxxxxxxxxxxxxxxxxxxxxxxxxxxx

这里解释一下正则表达式:

\s*        前面可能有空白

(\w+)        分支名称

\s+        分割空白

[^\[]+        直到左中括号

\[[^:]+:\s*gone\]        中括号,里面要有gone,否则不匹配。

.*$        一直到行尾。

补充修改:后面发现,如果分支名里有“-”,匹配不上。修改为:

r'\s*([\w\-]+)\s+[^\[]+\[[^:]+:\s*gone\].*$'

git的分支名是可以含有中划线的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值