有没有一种简单的方法可以删除所有远程等效项不再存在的跟踪分支?
例子:
分支(本地和远程)
- 大师
- 来源/主人
- 起源/错误修复
- 起源/错误修复-b
- 起源/错误修复-c
在本地,我只有一个 master 分支。现在我需要处理 bug-fix-a,所以我检查它,处理它,然后将更改推送到远程。接下来,我对 bug-fix-b 执行相同的操作。
分支(本地和远程)
- 大师
- 错误修复
- 错误修复-b
- 来源/主人
- 起源/错误修复
- 起源/错误修复-b
- 起源/错误修复-c
现在我有本地分支 master、bug-fix-a、bug-fix-b。 Master 分支维护者会将我的更改 merge 到 master 并删除他已经 merge 的所有分支。
所以现在的状态是:
分支(本地和远程)
- 大师
- 错误修复
- 错误修复-b
- 来源/主人
- 起源/错误修复-c
现在我想调用一些命令来删除分支(在本例中为 bug-fix-a,bug-fix-b),它们不再被表示在远程存储库中。
它类似于现有命令 git remote prune origin
,但更像是 git local prune origin
。
最佳答案
git remote prune origin
修剪不在远程的跟踪分支。
git branch --merged
列出已经 merge 到当前分支的分支。
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
关于git - 删除不再在远程的跟踪分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726949/