Git - 清理旧分支

Git - Clean up of old branches

我当前的 git 存储库中有几个分支。其中大部分已用于测试最终被放弃的新功能,其中一些已经实现并合并到我的主人。另一个(称之为 master2)指的是我正在处理的相同代码的不同概念(并且可能值得拥有自己的分支,但由于它现在被冻结,我只想将它保留在那里直到我有时间投入到它)。

我的问题是:除了 master 和 master 2 之外,如何删除所有旧的和现在未使用的分支?

我不介意将所有旧历史保留在远程存储库中,但我也不介意丢失它们。我的目标是当我在本地处理 repo 时,避免旧东西弄乱我的自动完成。

我浏览过的其他问题似乎在寻找更多 sofisticated/specialized 场景,其中人们希望将所有分支合并到 master 或类似组合中。相反,我确实希望(在某种意义上)重新开始,只有我的 master 和 master2 分支在本地可见并且是最新的。特别是,我有一些尚未合并的分支,但我仍然想保留,不像建议的那样here

如果与理解相关,这是一个科学计算的 repo。

您可以使用 -D 开关删除分支:

$ git branch -D branch_to_remove

Git 没有内置的方法来删除除这两个分支之外的所有分支(至少,据我所知不是),但是您可以使用简单的 shell执行此操作的脚本:

$ git branch -D `git branch | grep -v master`

grep -v 反转 grep 模式匹配。如果分支有不同的名称,那么您可以使用

$ git branch -D `git branch | grep -v 'master\|another_branch'`

这将删除除名为 master 的分支和另一个分支之外的所有分支。