我有一些我要清理的回购,他们有数百个已经合并到主人的分支。这是我到目前为止git branch -r --merged | grep -v master | xargs git push origin --delete
我无法通过的问题是匹配的分支列表返回为origin/branchname
,但git命令必须为git push origin --delete branchname
,我无法删除origin/
将它传递给xargs时每行的一部分。
到目前为止,我已经采用了这个列表并使用了崇高的文本来获取最后10%的方式,但我想知道如何在不离开终端的情况下完成最后一部分,并生成一组很长的单独命令只是把它们放回终端。
我尝试过使用grep -o
和sed
,但这两种做法都没有奏效。我在Mac OS X系统上使用控制台。
示例
我有以下远程分支从git branch -r --merged
origin/HEAD -> origin/master
origin/master
origin/feature/DEV-1122
origin/release/1.0
origin/release/1.1
要远程清理release/1.0
分支,我需要以下命令:
git push origin --delete release/1.0
但是命令git branch -r --merged | grep -v master | xargs git push origin --delete
将生成以下命令:
git push origin --delete origin/release/1.0
我需要能够从origin/
命令中删除git branch -f --merged
输出。
答案 0 :(得分:1)
试试这个:
git branch -r --merged | grep -v master | cut -d'/' -f2 | xargs git push origin --delete
要在第一个/
之后显示完整的行,请使用:
git branch -r --merged | grep -v master | cut -d'/' -f2- | xargs git push origin --delete