脚本专栏 
首页 > 脚本专栏 > 浏览文章

Ruby实现的删除已经合并的git分支脚本分享

(编辑:jimmy 日期: 2024/11/16 浏览:3 次 )

使用Git管理代码工程,着实方便了很多,但是当做完feature分支或者完成hotfix之后,总是忘记删除这些无用的分支,一个一个地删除着实麻烦,重复手工劳动不符合程序员的风格,于是写了一个简单的脚本。一键删除那些不需要的分支,让多余的干扰信息离开视线。

删除哪些分支?

删除的为Merge(合并)操作的源分支。如果工程正在处于分支A(HEAD为A分支),分支B已经合并到了分支A,即A分支包含了B分支的内容,则会删除B分支。

代码

复制代码 代码如下:
#!/usr/bin/env ruby
# encoding: utf-8
exceptBranches = ['master', 'pre', 'develop']
for branch in `cd #{ARGV[0]} && git branch -l`.split(' ') - ['*']
    next if exceptBranches.include"git branch -d #{branch}")
end

使用方法

复制代码 代码如下:
ruby removeMergedBranches.rb your_git_project

执行结果

执行结果类似如下,注意如果没有进行合并,则会提示警告或者错误,这些可以忽略。

复制代码 代码如下:
warning: deleting branch 'custom' that has been merged to
         'refs/remotes/origin/custom', but not yet merged to HEAD.
Deleted branch custom (was b63ab7d).
Deleted branch hotfix (was 340cca0).
Deleted branch mgit (was 86b4004).
error: The branch 'develop_rtl' is not fully merged.
If you are sure you want to delete it, run 'git branch -D develop_rtl'.

上一篇:Ruby中常用的字符串处理函数使用实例
下一篇:Ruby实现的一个强大的批量删除文件脚本分享
一句话新闻
微软与英特尔等合作伙伴联合定义“AI PC”:键盘需配有Copilot物理按键
几个月来,英特尔、微软、AMD和其它厂商都在共同推动“AI PC”的想法,朝着更多的AI功能迈进。在近日,英特尔在台北举行的开发者活动中,也宣布了关于AI PC加速计划、新的PC开发者计划和独立硬件供应商计划。
在此次发布会上,英特尔还发布了全新的全新的酷睿Ultra Meteor Lake NUC开发套件,以及联合微软等合作伙伴联合定义“AI PC”的定义标准。