小编典典

不再远程删除跟踪分支

javascript

有没有一种简单的方法来删除远程等效不再存在的所有跟踪分支?

例子:

分支(本地和远程)

  • 掌握
  • 原产地/主人
  • 起源/错误修复-a
  • 起源/错误修复-b
  • 起源/错误修复-c

在本地,我只有一个 master 分支。现在我需要处理bug-fix-a,所以我检查它,处理它,并将更改推送到远程。接下来我对bug-fix-b做同样的事情。

分支(本地和远程)

  • 掌握
  • 错误修复-a
  • 错误修复-b
  • 原产地/主人
  • 起源/错误修复-a
  • 起源/错误修复-b
  • 起源/错误修复-c

现在我有本地分支机构masterbug-fix-abug-fix-b。Master 分支维护者会将我的更改合并到master并删除他已经合并的所有分支。

所以现在的状态是:

分支(本地和远程)

  • 掌握
  • 错误修复-a
  • 错误修复-b
  • 原产地/主人
  • 起源/错误修复-c

现在我想调用一些命令来删除远程存储库中不再存在的分支(在本例中为 bug-fix-abug-fix-b )。

这将类似于现有命令git remote prune origin,但更像git local prune origin.


阅读 285

收藏
2022-02-18

共1个答案

小编典典

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

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

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

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

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

git branch --merged >/tmp/merged-branches && \
  vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches
2022-02-18