当前位置: 首页 > 后端技术 > Python

一个批量清除Git分支的脚本

时间:2023-03-25 23:11:42 Python

每开发一个新功能,往往都会创建一个新的功能分支。随着时间的推移,项目本地代码仓库上会堆积更多过时的分支。想着手动清理这些过时的分支一个一个的,真是累死人了。为了更高效的钓鱼,我写了一个python脚本来批量清理过时的分支。假设在路径D:\rui\work\下,有一个名为repo-a的本地代码仓库。在repo-a上,有三个分支:master、feature-a和feature-b。现在,要删除feature-b,请执行以下代码。值得一提的是,如果feature-b有commit没有推送到远程仓库,feature-b不会被移除。如果需要强制移除,可以单独执行命令gitbranch-Dfeature-b。#引入第三方库GitPythonfromgitimportRepo,GitCommandError#仓库名REPO_NAME='repo-a'#需要保留的分支,默认保留mater分支#注意:没有推送新commit的分支到远程仓库,即使不在集合中,也不会被删除('started0v0\n')#创建版本库Objectrepo_path=WORK_PATH+REPO_NAMErepo=Repo(repo_path)#如果当前分支有未提交的更改,则中止操作ifrepo.is_dirty():print('请提交当前分支的变化优先!!!')exit()#切换到masterrepo.heads.master.checkout()not_push_branch_list=[]forheadinrepo.heads:#如果分支名称不在保留集中,deletehead_name=head.nameifhead_name=='master'orhead_nameinREMAIN_BRANCH_TUPLE:continuetry:#Removebranch#本质上执行命令gitbranch-dfeature-namerepo.delete_head(head_name)exceptGitCommandError:#没有推送新提交的分支,执行删除操作,会抛出GitCommandError异常#当然,如果其他情况也可能会抛出GitCommandError异常发生错误。在这里,简单地处理not_push_branch_list.append(head_name)ifnot_push_branch_list:not_push_branch_str=','.join(not_push_branch_list)print('Branchwithoutpushnewcommit:{0}\n'.format(not_push_branch_str))print('结束了^0^')if__name__=='__main__':main()