不再在远程删除本地分支

是否有一种简单的方法可以删除所有没有远程等效的本地分支?

例:

分支机构(本地和远程)

  • 产地/主
  • 产地/漏洞修复,一个
  • 产地/漏洞修复-B
  • 产地/漏洞修复-C
  • 在本地,我只有一个主分支。 现在我需要处理bug-fix-a,所以我检查一下,处理它,并将更改推送到远程。 接下来,我对bug-fix-b也做了同样的处理。

    分支机构(本地和远程)

  • 漏洞修复,一个
  • 漏洞修复-B
  • 产地/主
  • 产地/漏洞修复,一个
  • 产地/漏洞修复-B
  • 产地/漏洞修复-C
  • 现在我有本地分支机构主,bug-fix-a,bug-fix-b。 主分支维护人员会将我的更改合并到主数据库中,并删除他已合并的所有分支。

    所以现在的状态是:

    分支机构(本地和远程)

  • 漏洞修复,一个
  • 漏洞修复-B
  • 产地/主
  • 产地/漏洞修复-C
  • 现在我想调用一些命令来删除分支(在这种情况下是bug-fix-a,bug-fix-b),它们不再在远程存储库中表示。

    它会像现有的命令git remote prune origin ,但更像git local prune origin


    git remote prune origin跟踪不在远程的分支。

    git branch --merged列出已合并到当前分支中的分支。

    xargs git branch -d删除标准输入中列出的分支。

    小心删除由git branch --merged列出的git branch --merged 。 该列表可能包括您不希望删除的master或其他分支。

    为了让您有机会在删除分支之前编辑列表,您可以在一行中执行以下操作:

    git branch --merged >/tmp/merged-branches && vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches


    命令后

    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
    

    大多数这些答案实际上并没有回答原来的问题。 我做了一堆挖掘工作,这是我找到的最干净的解决方案。 这是一个稍微更彻底的答案:

  • 检查你的默认分支。 通常是git checkout master
  • 运行git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d
  • 说明:

    通过修剪你的跟踪分支,然后删除本地的,显示他们在git branch -vv中“走出去”。

    笔记:

    如果你的语言设置为英语以外的东西,你将需要改变gone到合适的词。 只有本地的分支不会被触及。 已在远程删除但未合并的分支将显示通知,但不会在本地删除。 如果你想删除这些以及将-d改为-D

    链接地址: http://www.djcxy.com/p/25999.html

    上一篇: Remove local branches no longer on remote

    下一篇: SoundPlayer.Stop() hangs, buzzes