有没有一种简单的方法来删除远程等效不再存在的所有跟踪分支?
例子:
分支(本地和远程)
在本地,我只有一个 master 分支。现在我需要处理bug-fix-a,所以我检查它,处理它,并将更改推送到远程。接下来我对bug-fix-b做同样的事情。
现在我有本地分支机构master、bug-fix-a、bug-fix-b。Master 分支维护者会将我的更改合并到master并删除他已经合并的所有分支。
所以现在的状态是:
现在我想调用一些命令来删除远程存储库中不再存在的分支(在本例中为 bug-fix-a、bug-fix-b )。
这将类似于现有命令git remote prune origin,但更像git local prune origin.
git remote prune origin
git local prune origin
git remote prune origin修剪不在远程的跟踪分支。
git branch --merged列出已合并到当前分支的分支。
git branch --merged
xargs git branch -d删除标准输入上列出的分支。
xargs git branch -d
小心删除列出的分支git branch --merged。该列表可能包括master您不想删除的其他分支。
master
为了让自己有机会在删除分支之前编辑列表,您可以在一行中执行以下操作:
git branch --merged >/tmp/merged-branches && \ vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches