寻找一个用于删除Git仓库中除了主分支之外的所有分支并将它们推送到远程仓库的命令。
这是为了在发布之前清理Git仓库,因为以前的历史分支和其他所有东西都是完全的开发更改,不重要。
这会删除所有分支(除了master
分支),即使该分支的名称中带有斜杠 '/':
git branch -r | grep 'origin' | grep -v 'master$' | grep -v HEAD | cut -d/ -f2- | while read line; do git push origin :heads/$line; done;
这将做同样的事情,不会更改develop
和master
分支:
git branch -r | grep 'origin' | grep -v 'master$' | grep -v 'develop$' | grep -v HEAD | cut -d/ -f2- | while read line; do git push origin :heads/$line; done;
这是fish shell的脚本:
git branch -r | grep 'origin' | grep -v 'master$' | grep -v 'develop$' | grep -v HEAD | cut -d/ -f2- | while read line; git push origin :heads/$line; end;
git push origin ...
命令,每个命令用于删除一个分支。如果您的 git 配置要求每次 git push
进行身份验证,而这不是您想要的,您可以考虑使用 SSH auth 或查看您的 git 配置。我使用非交互式身份验证进行 git push
,因此上述命令可以在没有任何干预或额外步骤的情况下执行。正如他们所说,YMMV。 - staximgit branch -r | grep 'origin' | grep -v 'main$' | grep -v HEAD | cut -d/ -f2- | while read line; do git push origin :heads/$line; done;
将远程分支列表筛选出以"origin"开头的分支,排除名为"main"和"HEAD"的分支,然后截取分支名称的第二部分至末尾,并逐行执行以下操作:将本地分支与远程分支解绑并删除。 - Ramigit branch -r | grep 'origin' | grep -v 'origin/master$' | grep -v HEAD | cut -d/ -f2- | while read line; do git push origin :heads/$line; done;
- Dan Nolan最后,以下命令对我非常有效,您可以根据进一步的要求进行调整。
git branch -r | grep origin/ | grep -v 'master$' | grep -v HEAD| cut -d/ -f2 | while read line; do git push origin :$line; done;
origin'
改为 origin/
。 - stanimirspgit branch | grep -v "master\|$(git branch --show-current)" | xargs git branch -D