我必须在这里添加一个答案,因为其他答案要么不覆盖我的情况,要么不必要地复杂化。 我和其他开发人员一起使用github,我只想要从github PR中删除其远程(可能合并并且)删除的所有本地分支从我的机器中一次删除。不,像 git branch -r --merged 不要覆盖未在本地合并的分支,或者根本没有合并的分支(废弃)等,因此需要不同的解决方案。
git branch -r --merged
无论如何,我从其他答案得到它的第一步:
git fetch --prune
干涸的 git remote prune origin 在我的情况下,它似乎会做同样的事情,所以我选择最短的版本来保持简单。
git remote prune origin
现在,一个 git branch -v 应该将其遥控器被删除的分支标记为 [gone] 。 因此,我需要做的就是:
git branch -v
[gone]
git branch -v|grep \\[gone\\]|awk '{print $1}'|xargs -I{} git branch -D {}
就这么简单,它会删除我想要的所有内容。
不太常见 xargs 语法是这样的,它也适用于Mac&amp; BSD除Linux之外。 小心,这个命令不是干运行所以它会强行删除所有标记为的分支 [gone] 。显然,这是git什么都没有永远消失,如果你看到删除的分支你记得你想保留你总是可以取消删除它们(上面的命令会在删除时列出它们的哈希值,所以很简单 git checkout -b <branch> <hash> 。
xargs
git checkout -b <branch> <hash>