Git-骚操作之批量删除分支
前言
一个业务一个业务开发过去,少的是头发,留下的还有超多的本地分支。
某一天,我的强迫症突然发作了,我就只想保留当前开发的本地分支,该怎么办呢?当然也可以逐条人肉删除,但是我不是很喜欢,不仅累,还显的我不是那么聪明。
于是,去寻找是否有批量删除的命令,果然,它是有的!
What-批量删除分支命令
批量删除本地分支
批量删除分支命令具体格式为:
git branch |grep 'xxx' |xargs git branch -D
有两个使用上要注意的地方:
- xxx 要替换成分支名称的搜索关键词。
git branch -D
删除命令中的 -D 和 -d 参数要合理使用,避免强制删除发生惨剧。
批量删除远程分支
有小伙伴在评论中有这样的疑问,实际开发场景的确也有类型的需求,那么我们就来搞一下
git branch -r | grep 'xxx' | sed 's/origin\///g' | xargs -I {} git push origin :{}
有两个使用上要注意的地方:
- xxx 要替换成分支名称的搜索关键词。
git branch -r
是仅仅查询远程分支,这里看大家的需求,按需调整。(例如你没有拉取到远程的最新分支,要删除那个最近分支,可能查询不到哦,这种情况可以直接使用本地分支查询git branch
,或者全量查询git branch -a
)- 这里只删除了远程分支,本地分支还在的,如果需要,需要再删除下本地的分支
Why-如何做到批量的呢
不知你有没有注意到,这条命令的格式很特殊,不是常规的 Git 命令格式。其中含有 Linux 命令 grep
,Git 命令 git branch -D
,还有陌生的 xargs
,不常见的 |
,我开始好奇,上面都是些啥,以及上面的命令是如何做到批量删除的?
为了解决自己的疑问,我去搜索下相关知识,get了不少小技能,现在记在小本本上总结一下。
首先 grep
,sed
, xargs
,|
三个都是 Linux 提供的命令。
grep
grep
很常见,是以上三个命令我唯一认识的,名称是 global regular expression print(全局正则表达式输出)的缩写,是Linux 提供的一个搜索工具,搭配不同参数使用,几乎可以做到搜索任何东西,文件,文件夹,文本内容,搜索结果的总数等。这有篇不错的文章,想了解的同学可以去看下。14 个 grep 命令的例子
sed
sed
命令是利用脚本来编辑文本文件。采用的是流编辑模式,最明显的特点是,处理数据前,需要预先提供一组规则,会按照该规则来编辑数据。
例如我们删除远程分支用的命令 sed 's/origin\///g'
就是其中一个用法,模式如下:
sed 's/要被取代的字串/新的字串/g'
如果有兴趣详细了解,推荐文章:Linux sed命令完全攻略(超级详细)
KISS 和 | 命令
下面两个命令,需要先说明一下Linux 的 KISS 理念。不要多想,不是么么哒,而是 Keep It Simple,Stupid! 表达的意思是每个命令工具都只做一件事情,简单好用。基于这种理念,Linux 的很多命令都是相互独立的。那真实使用场景中,有很多复杂的事情,需要多条命令协作使用,于是 Linux 提供了管道来完成直接的数据传输。管道的操作符就是 |
。
基本格式
指令1 | 指令2 | ...
作用
用来连接多条指令,前一条指令的输出流向会作为后一条指令的标准输入。
例1:
ls | grep "Android"
执行结果:列出该路径下所有名称包含 Android 的文件
例2:
git branch | grep "feature"
执行结果:列出当前项目所有分支中,名称含有"feature"的分支。
xargs
xargs
命令配合 |
使用,将前一条指令的输出流向会作为后一条指令的参数输入。
基本格式
指令1 | xargs 指令2 | ...
作用
命令配合|
使用,将前一条指令的输出流向会作为后一条指令的参数输入。
例1:
ls | grep "Android" | xargs cat
执行结果:输出该路径下所有名称包含 Android 的文件的内容
例2:
git branch | grep "feature" | xargs git branch -d
执行结果: 找出所有分支中,名称含有"feature"的分支,然后删除。
总结
大多时候都是搜索到相关命令直接用就没有后续了,也不知道具体的原理。于是,无知的我,还是第一次清楚的理解 Linux 的管道命令。使用管道组合命令实现批量删除的实现很受启发,以后遇到问题也多了一种解决思路。
学无止境,不能懈怠,新知识带来的愉悦感是不可比拟的,希望我们在每一天都有所成长,下篇文章见。
Git-骚操作之批量删除分支相关推荐
- Git-骚操作-批量删除分支
前言 一个业务一个业务开发过去,少的是头发,留下的还有超多的本地分支. 某一天,我的强迫症突然发作了,我就只想保留当前开发的本地分支,该怎么办呢?当然也可以逐条人肉删除,但是我不是很喜欢,不仅累,还显 ...
- 11、git查看往日提交以及删除分支ID命令
git查看往日提交以及删除分支ID git reflog --date=iso
- git idea 可视化_那些你应该知道的,但是你一定不知道的 Git 骚操作
Hello 大家好,作为团队中的主程阿粉经常参与很多核心功能的开发,而且很多时候一个需求没做好中间又插入新的紧急的需求或者 bug 修复,每次遇到这种情况,如果两个地方代码不冲突的话还好,可以直接在本 ...
- Redis常用操作之批量删除keys,和清空整个数据库
redis默认有0-15总共16个库,默认在0库 1.选择库DB0,例:select 1 选择db1 10.143.153.216:8896> select 0 OK 2.查看所选择库的大小: ...
- git浏览器界面管理之删除分支
1.点击左侧菜单仓库(Repository): 2.仓库(Repository) 下找到分支(branches): 3.选中右侧界面不用的分支删除即可
- 删除套餐(关联表的删除操作,批量删除,单个删除)
需求分析: 代码开发-梳理交互过程: 重写接口: public interface SetmealService extends IService<Setmeal> {/*** 新增套餐, ...
- mybatis plus骚操作之逻辑删除
介绍
- git删除分支,提示无法删除,怎么处理 ?
删除之前你自己创建的,自己昵称的dev分支(如 老徐 idoxu_dev) 1)命令 git branch -d 2)效果 如果提示无法删除: [root@istester gittest]# git ...
- Git科普文,Git基本原理各种骚操作
Git简单介绍 Git是一个分布式版本控制软件,最初由Linus Torvalds创作,于2005年以GPL发布.最初目的是为更好地管理Linux内核开发而设计. Git工作流程以及各个区域 Wo ...
最新文章
- mac 上搭建gitlabel_在mac终端中使用git(适用于github、gitlabel)
- 行锁mysql怎么执行_Mysql调用什么情况会用到行锁与表锁
- (24) 不可能的出栈顺序
- python群发短信脚本_python实现zabbix发送短信脚本
- 前端 验证码隐藏怎么实现_Python爬虫教程:200行代码实现一个滑动验证码
- 【Contact】结构体+动态内存管理+文件存储实现简易通讯录代码
- CN笔记:第一章 计算机网络概述
- 网络安全分析 | 用OpenFEA定位WebShell木马后门
- markdown mysql高亮_博客园里Markdown支持高亮显示的语言
- jqGrid Pager、Navigator和自定义按钮(转)
- AI2(App Inventor 2)离线版服务器(2019.8.25更新)
- office相关文件转pdf的几种方式
- 转载:全志问题解决方法
- Android 子线程更新UI
- 小白学 Python 数据分析(17):Matplotlib(二)基础操作
- 从零开始学USB(二十四、USB接口HID类设备(六)_物理描述符)
- 任意装修、在线DIY定制商城系统,跟紧时代的潮流
- 美DARPA支持研发用于救灾与高风险环境的微型机器人
- 【游戏编程扯淡精粹】如何学习编程语言
- seo外链建设(如何正确做好seo网站外链建设)
热门文章
- JS所有类型选择器,包括父子兄弟等
- 电脑控制手机,教你通过脚本实现自动安装、卸载软件
- 基于saml2.0的平台(适用多种平台)单点登录配置,以okta为例
- 教你批量筛选,快递物流中一天未更新的单号
- 物理学专业英语(词汇整理)--------05
- mongoDB之ObjectId
- 职称计算机报名密码忘了,忘了WindowsXP超级管理员密码,怎么办
- html超出父元素,css怎么让元素超出父元素
- [LeetCode]849. Maximize Distance to Closest Person 解题报告(C++)
- 报错:MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O