如何从字母'o'开始删除git中的分支?
假设,我有一个如下所示的分支列表:
origin_alpha
origin_beta
origin_gamma
alpha
beta
gamma
Run Code Online (Sandbox Code Playgroud)
我不想删除分支origin_alpha,origin_beta和origin_gamma.
hek*_*mgl 46
更新:-r选项xargs是GNU插件.除非你使用xargsGNU findutils,否则它可能无效.您可以省略它,但如果输入到xargs的输入为空,则会导致错误.
您可以使用git branch --list <pattern>和输出它的输出xargs git branch -d:
git branch --list 'o*' | xargs -r git branch -d
Run Code Online (Sandbox Code Playgroud)
顺便说一句,上面的代码有一个小问题.如果您当前已检出其中一个以o输出开头的分支git branch --list 'o*'将如下所示:
* origin_master
origin_test
o_what_a_branch
Run Code Online (Sandbox Code Playgroud)
请注意*当前分支名称前面的星号.
虽然无论如何都无法删除当前分支,但它会导致xargs也传递*给它git branch delete.
正如我所说,它只是一个装饰错误,但如果你想避免它使用:
git branch --list 'o*' | sed 's/^* //' | xargs -r git branch -d
Run Code Online (Sandbox Code Playgroud)
Aus*_*p.b 18
git branch -D $(git branch --list 'regex_here')
示例: \
git branch -D $(git branch --list 'aputhen/*')
删除名称以 开头的所有分支aputhen/。
lzz*_*uca 13
另一种方式可能是这样的:
git branch -d $(git branch | grep yourSearchPattern)
Run Code Online (Sandbox Code Playgroud)
对我来说看起来更直观,因为grep是我每天使用的东西.
你也可以为它做一个别名(或者也可以是这里建议的任何解决方案),例如在这里查看如何将参数传递给别名:http: //www.cyberciti.biz/faq/linux-unix-pass-argument-到别名命令/
PS在您的具体情况下,yourSearchPattern可能来自:
git branch -d $(git branch | grep origin)
Run Code Online (Sandbox Code Playgroud)
PPS作为下一步,也很好,使删除过程更加冗长,例如,你必须确认每个分支的删除是很好的.但我认为这克服了这个问题......
聚会迟到了,但另一种方法是
git branch -d `git branch | grep substring`
Run Code Online (Sandbox Code Playgroud)
对于当前的问题
git branch -d `git branch | grep origin`
Run Code Online (Sandbox Code Playgroud)
这将删除名称包含 origin 的所有分支。
小智 6
添加我在 PowerShell (Windows) 中使用的脚本
Foreach ($branch in (git branch --list | findstr user)) { git branch -D $branch.trim() }
| 归档时间: |
|
| 查看次数: |
8527 次 |
| 最近记录: |