在工作中,我们使用的主题分支在某些时候被集成到少数(3)主分支中.现在我想从我的远程存储库中删除已完全集成到主分支中的所有主题分支.如果那是不可能的,那么检索已经集成的本地分支列表也会没问题.
Mic*_*ker 44
另一个人认为这是最好的(并且它看起来不错):
git branch -r --merged origin/master | grep -v master | grep "origin/" | cut -d "/" -f 3- | xargs -n 20 git push --delete origin
Run Code Online (Sandbox Code Playgroud)
说明:
git branch -r --merged origin/master
-r
/ --remotes
列出远程跟踪分支.--merged origin/master
只列出可以从中获取提示的分支origin/master
.grep -v master
删除包含master
列表的任何分支名称.1 -v
表示否定匹配.grep "origin/"
只选择origin
远程分支.cut -d "/" -f 2-
删除origin/
前缀xargs -n 20 git push --delete origin
做类似的事情 git push --delete origin branch-a branch-b branch-c …
-n 20
/ --max-args=20
每个命令行最多使用20个参数.至于-n
,我只选择20作为例子.较少的参数会使它变慢,例如-n 1
让它一次删除一个; 您有更多进度提示,因为每次删除分支时都会报告.更多的参数-n 200
会使它更快(更少的总时间),但它只报告每200个分支一次,让你认为它一开始就被冻结(虽然它不是).根据需要调整数量.如果省略此选项,则默认数字非常大(我的机器中为2048).
请注意,这也会删除origin/HEAD -> origin/master
,但origin/HEAD
无论如何你都不想搞砸.
原始答案:
git push --delete remote topicbranch
Run Code Online (Sandbox Code Playgroud)
要么
git push remote :topicbranch
Run Code Online (Sandbox Code Playgroud)
给出一个分支列表,就可以了 git branch --merged master
Ada*_*ruk 14
你可以一起做
git branch --merged master | grep -v master | xargs -n 1 git push --delete origin
Run Code Online (Sandbox Code Playgroud)
如果您发现经常这样做,请将其转储到名为"干净"的脚本中.
小智 11
如果要从源存储库中删除远程分支:
git branch -r --merged develop | egrep -iv '(master|develop)' | sed 's/origin\///g' | xargs -n 1 git push --delete origin
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13991 次 |
最近记录: |