Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何批量删除 git 分支 #6

Open
JasinYip opened this issue Jul 21, 2015 · 2 comments
Open

如何批量删除 git 分支 #6

JasinYip opened this issue Jul 21, 2015 · 2 comments

Comments

@JasinYip
Copy link

这是之前 @bittenApple 教我的,我觉得非常好用,于是我整理了一下分享给大家

1. 查看分支列表

git branch

2. 过滤结果

比如我 git branch 后得到如下列表:

  junxing/haha
  junxing/hello
* master
  liang/hi
  liang/good

我现在要筛选出所有含有 junxing 的结果,所以要这样写:

git branch | grep junxing

于是我们得到了

  junxing/haha
  junxing/hello

2.1. 删除结果中的空格(非必要)

我们留意到 junxing 前面其实是有空格的,所以我现在要把前面的空格删掉(当然其实不删除也行,相当于你在命令行里多敲几个空格而已)。我们通过这样的方式删除空格:

git branch | grep 'junxing' | cut -c 2-

这里的 2 就是第二个字符,在 2 后面加一个 - 表示从第二个字符之后到最后的字符串,所以我们现在得到了:

junxing/haha
junxing/hello

3. 利用结果进行批量删除

我们现在已经得到筛选出来的结果了,我们现在开始利用结果来进行批量删除。我们知道要删除分支可以使用 git branch -D [分支名] 来删除,要删除多个分支只需要加一个空格然后再写分支名就好了。

于是我们现在需要把刚才筛选出来的结果一个一个地放到后面,于是我们这样写:

git branch | grep 'junxing' | cut -c 2- | xargs git branch -D

xargs 命令会自动将筛选出来的结果添加到后面,然后执行。

这样我们就可以批量删除分支了。

@JasinYip
Copy link
Author

有童鞋提到如何反选的问题。

其实很简单,只需要在 grep 命令后面加入 -v 参数就好。

比如我们现在需要筛选出除 master 之外的所有分支,那我们只需要这样写就可以了:

git branch | grep 'master' -v

@ifduyue
Copy link

ifduyue commented Oct 21, 2015

可以用 git-extras 提供的 git delete-merged-branches

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants