Question

I want to remove the matching branch.

$ 
demon@bogon solo$ git branch |grep bug_
  bug_1255
  bug_1279
  bug_1280
  bug_1286
  bug_1311
  bug_1315
  bug_1317
  bug_1329
  bug_1335
  bug_1356
  bug_1361
  bug_1372
  bug_1375
  bug_1402
  bug_1406
demon@bogon solo$ git branch |grep bug_ | xargs git branch -D
error: branch 'bug_1255' not found.
error: branch 'bug_1279' not found.
error: branch 'bug_1280' not found.
error: branch 'bug_1286' not found.
error: branch 'bug_1311' not found.
error: branch 'bug_1315' not found.
error: branch 'bug_1317' not found.
error: branch 'bug_1329' not found.
error: branch 'bug_1335' not found.
error: branch 'bug_1356' not found.
error: branch 'bug_1361' not found.
error: branch 'bug_1372' not found.
error: branch 'bug_1375' not found.
error: branch 'bug_1402' not found.
error: branch 'bug_1406' not found.
demon@bogon solo$ git branch -D bug_1406
Deleted branch bug_1406 (was 509e606).
demon@bogon solo$ git branch | grep bug_ | od -c
0000000          033   [   0   1   ;   3   1   m 033   [   K   b   u   g
0000020    _ 033   [   m 033   [   K   1   2   5   5  \n         033   [
0000040    0   1   ;   3   1   m 033   [   K   b   u   g   _ 033   [   m
0000060  033   [   K   1   2   7   9  \n         033   [   0   1   ;   3
0000100    1   m 033   [   K   b   u   g   _ 033   [   m 033   [   K   1
0000120    2   8   0  \n         033   [   0   1   ;   3   1   m 033   [
0000140    K   b   u   g   _ 033   [   m 033   [   K   1   2   8   6  \n
0000160          033   [   0   1   ;   3   1   m 033   [   K   b   u   g
0000200    _ 033   [   m 033   [   K   1   3   1   1  \n         033   [
0000220    0   1   ;   3   1   m 033   [   K   b   u   g   _ 033   [   m
0000240  033   [   K   1   3   1   5  \n         033   [   0   1   ;   3
0000260    1   m 033   [   K   b   u   g   _ 033   [   m 033   [   K   1
0000300    3   1   7  \n         033   [   0   1   ;   3   1   m 033   [
0000320    K   b   u   g   _ 033   [   m 033   [   K   1   3   2   9  \n
0000340          033   [   0   1   ;   3   1   m 033   [   K   b   u   g
0000360    _ 033   [   m 033   [   K   1   3   3   5  \n         033   [
0000400    0   1   ;   3   1   m 033   [   K   b   u   g   _ 033   [   m
0000420  033   [   K   1   3   5   6  \n         033   [   0   1   ;   3
0000440    1   m 033   [   K   b   u   g   _ 033   [   m 033   [   K   1
0000460    3   6   1  \n         033   [   0   1   ;   3   1   m 033   [
0000500    K   b   u   g   _ 033   [   m 033   [   K   1   3   7   2  \n
0000520          033   [   0   1   ;   3   1   m 033   [   K   b   u   g
0000540    _ 033   [   m 033   [   K   1   3   7   5  \n         033   [
0000560    0   1   ;   3   1   m 033   [   K   b   u   g   _ 033   [   m
0000600  033   [   K   1   4   0   2  \n                                
0000610

demon@bogon solo$ git branch |grep bug_ | xargs echo git branch -D
git branch -D bug_1255 bug_1279 bug_1280 bug_1286 bug_1311 bug_1315 bug_1317 bug_1329 bug_1335 bug_1356 bug_1361 bug_1372 bug_1375 bug_1402
demon@bogon solo$ git branch |grep bug_ | xargs -n 1 git branch -D
error: branch 'bug_1255' not found.
error: branch 'bug_1279' not found.
error: branch 'bug_1280' not found.
error: branch 'bug_1286' not found.
error: branch 'bug_1311' not found.
error: branch 'bug_1315' not found.
error: branch 'bug_1317' not found.
error: branch 'bug_1329' not found.
error: branch 'bug_1335' not found.
error: branch 'bug_1356' not found.
error: branch 'bug_1361' not found.
error: branch 'bug_1372' not found.
error: branch 'bug_1375' not found.
error: branch 'bug_1402' not found.
Was it helpful?

Solution

I asked if you have colourization turned on forcibly, and the answer appears to be yes.

To fix, find your ~/.gitconfig and change the colour stanza to more like:

[color]
        ui = auto

That does not force coloured output; if the output goes to a pipe, the colouring is dropped.

OTHER TIPS

Your issue isn't with OSX or xargs

mycroft:msg sja$ git branch bug
mycroft:msg sja$ git branch
  bug
* master
mycroft:msg sja$ git branch | grep bug | xargs git branch -D
Deleted branch bug (was 32c55a4).
mycroft:msg sja$ git branch
* master
mycroft:msg sja

mycroft:msg sja$ git branch bug_xxx
mycroft:msg sja$ git branch | grep bug_xxx | xargs git branch -D
Deleted branch bug_xxx (was 32c55a4).
mycroft:msg sja$ git branch
* master
mycroft:msg sja$ 

You can print only the matching part of the lines using -o option of grep.

$ git branch | grep -Eo "bug_[0-9]+" | xargs git branch -D

grep -Eo "bug_[0-9]+" prints branch names without colourization characters.


I found easier solution. Try --no-color option.

$ git branch --no-color | grep _bug | xargs git branch -D

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top