我有几个回收,我想清理,他们有数百个已经合并到主的分支机构。这是我到目前为止git branch -r --merged | grep -v master | xargs git push origin --delete
我一直未能得到的问题是匹配的分支名单返回为origin/branchname
,但git命令必须是git push origin --delete branchname
,我无法删除origin/
的一部分每行将它传递给xargs。 到目前为止,我已经拿到了这份清单,并使用了崇高的文字让我获得了最后10%的方式,但我想知道如何做到最后一部分,而不需要离开终端,并生成一个很长的个人命令只是把它们放回终端。如何清理已经合并的远程git分支?
我试过使用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
我需要能够从git branch -f --merged
命令中去除origin/
输出。
那是相当接近!我还想在第一个'/'之后包含其余的行,所以如果你将cut命令更新为'cut -d'/'-f2-'我将其标记为答案:) – rodmunera
对于脚本,你应该使用管道命令(即'for-each-ref'而不是'branch')。 'git for-each-ref --merged | grep -v master | grep refs \/remotes \/origin \/| cut -d'/'-f4-'是一个很好的起点 –
使用管道的优点是在这种情况下的瓷器?分支中是否存在某些会导致某些边缘情况出现问题的内容? – rodmunera