为了账号安全,请及时绑定邮箱和手机立即绑定

删除跟踪分支不再在远程

删除跟踪分支不再在远程

Git
蛊毒传说 2019-09-06 17:19:04
是否有一种简单的方法可以删除远程等效不再存在的所有跟踪分支?例:分支机构(本地和远程)主产地/主产地/漏洞修复,一个产地/漏洞修复-B产地/漏洞修复-C在本地,我只有一个主分支。现在我需要处理bug-fix-a,所以我检查它,处理它,并将更改推送到远程。接下来我用bug-fix-b做同样的事情。分支机构(本地和远程)主漏洞修复,一个漏洞修复-B产地/主产地/漏洞修复,一个产地/漏洞修复-B产地/漏洞修复-C现在我有本地分支机构master,bug-fix-a,bug-fix-b。Master分支维护者将我的更改合并到master中并删除他已经合并的所有分支。那么现在的状态是:分支机构(本地和远程)主漏洞修复,一个漏洞修复-B产地/主产地/漏洞修复-C现在我想调用一些命令删除分支(在本例中为bug-fix-a,bug-fix-b),这些分支不再在远程存储库中表示。它会像现有的命令git remote prune origin,但更像是git local prune origin。
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

命令之后


git fetch -p

运行时删除远程引用


git branch -vv

它将显示为“已离开”作为远程状态。例如,


$ git branch -vv

  master                 b900de9 [origin/master: behind 4] Fixed bug

  release/v3.8           fdd2f4e [origin/release/v3.8: behind 2] Fixed bug

  release/v3.9           0d680d0 [origin/release/v3.9: behind 2] Updated comments

  bug/1234               57379e4 [origin/bug/1234: gone] Fixed bug

因此,您可以编写一个简单的脚本来删除已经转移的本地分支:


git fetch -p && for branch in `git branch -vv | grep ': gone]' | awk '{print $1}'`; do git branch -D $branch; done



查看完整回答
反对 回复 2019-09-06
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

这些答案中的大多数实际上并未回答原始问题。我做了一堆挖掘,这是我找到的最干净的解决方案。这是一个稍微更全面的答案:

  1. 查看您的默认分支。平时git checkout master

  2. 跑 git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d

说明:

通过修剪您的跟踪分支然后删除显示它们“消失”的本地分支来工作git branch -vv

笔记:

如果您的语言设置为英语以外的其他语言,则需要更改gone为相应的单词。不会触及仅限本地的分支。已在远程删除但未合并的分支将显示通知但不会在本地删除。如果你想删除那些以及更改-d-D


查看完整回答
反对 回复 2019-09-06
  • 3 回答
  • 0 关注
  • 737 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信