我有一个安装了许多远程设备的存储库,因为我们使用的是Forking Workflow
我通常每季度清理一次源仓库中所有合并的分支,但我很难弄清楚如何清理单个远程仓库中的合并分支。
git branch -r --merged <how can i target a specific remote?> |
grep -v "develop" |
grep -v "master" |
grep -v "pr" |
sed -r 's/(remote1|remote2|remote3|remote4)\///' |
xargs git push -d origin
这里的想法是列出所有合并的分支,过滤掉develop
、master
、pr
并删除origin/
,然后删除git push -d
我遇到的问题是我不知道如何只针对特定的远程进行删除。每次运行此命令时,它都会列出每个远程的所有分支。然后运行此命令会输出错误
error: unable to delete '<branch-name>': remote ref does not exist
1条答案
按热度按时间f87krz0w1#
由于
git branch -r --merged
的输出包含了远程名称,因此您可以使用grep
(etc)来按远程进行过滤。例如,只查看remote1
远程中的那些分支:把它和你所拥有的放在一起--并把事情简化一点--我们得到:
如果出现错误,请将
xargs
替换为echo xargs
,这样您就可以在不运行它的情况下看到生成的命令行。