Git 批量删除分支
Git 批量删除分支
1. 批量删除本地分支
在平时的开发中,一言不和就会新建一个分支来开始新的工作,当工作完成后我们可能不会及时的删除掉建立的分支,久而久之,查看分支的时候就出现了类似下面的情况。
Laily@Laily:~/te|0302⇒ git branch
0101
0102
0103
0201
0202
0301
* 0302
master
git 本身是支持批量删除的
git branch -D <branch1> <branch2> <branch3>
所以问题就是如何查询出需要删除的分支,这里使用 git branch 和 grep 命令结合。
grep -E 命令可以使用正则表达式,因为我的分支名开头都会是建立时的日期,所以这里比如我要查看 1 月份的分支则可以使用下列命令
⇒ git branch | grep -E "\\<01"
0101
0102
0103
// git branch | grep -E "\\b01
// 使用这个命令也是一样的
备注:
这里应该用 git branch | grep -E “^01 也可以,但是不知道是电脑的原因还是 zsh 的原因,我这里这样查找不到任何东西。
然后加上删除命令就可以了。
Laily@Laily:~/te|master⇒ git branch -D `git branch | grep "\\b01"`
Deleted branch 0101 (was 34408e4).
Deleted branch 0102 (was 34408e4).
Deleted branch 0103 (was 34408e4).
1.1 删除已经合并的分支
git branch -d `git branch --merged master`
2. 批量删除远程分支
2.1 方法一
git push origin --delete <branch1> <branch2> <branch3>
git 1.7.0 之后支持了这样的命令,所以也可以前面查找分支的方法。这种个人感觉是最好用的。
2.2 方法二
git branch -r | awk -F/ '/\\/PREFIX/{print $2}' | xargs -I {} git push origin :{}
这里是删除分支名前缀为 PREFIX 的分支的。
删除之前建议使用
git branch -r | awk -F/ '/\\/PREFIX/{print $2}'
确认一下需要删除的分支。
比如我要删除 02 开头的分支
Laily@Laily:~/te|master⚡ ⇒ git branch -r | awk -F/ '/\\/02/{print $2}'
0201
0202
Laily@Laily:~/te|master⚡ ⇒ git branch -r | awk -F/ '/\\/02/{print $2}' | xargs -I {} git push origin :{}
To <http://git.oschina.net/Laily/tt>
- [deleted] 0201
To <http://git.oschina.net/Laily/tt>
- [deleted] 0202
这里使用的 awk 命令来查找的分支,具体的查询语句可以去了解 awk 的使用。
Read other posts