Git-清理旧分支

Git-清理旧分支,git,github,branch,Git,Github,Branch,我在当前的git回购上有几个分支机构。其中大部分用于测试新特性,这些特性最终被放弃,其中一些已经实现并合并到我的主程序中。另一个(称之为master2)指的是我正在处理的同一代码的不同概念(可能应该有自己的分支,但因为它现在是冻结的,所以我只想保留它,直到我有时间投入其中) 我的问题是:除了master和master 2之外,如何删除所有旧的和现在未使用的分支 我不介意在远程存储库中保留所有旧的历史记录,但我也不介意丢失它们。我的目标是,当我在本地处理回购协议时,避免旧东西干扰我的自动完成 我浏

我在当前的git回购上有几个分支机构。其中大部分用于测试新特性,这些特性最终被放弃,其中一些已经实现并合并到我的主程序中。另一个(称之为master2)指的是我正在处理的同一代码的不同概念(可能应该有自己的分支,但因为它现在是冻结的,所以我只想保留它,直到我有时间投入其中)

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

我不介意在远程存储库中保留所有旧的历史记录,但我也不介意丢失它们。我的目标是,当我在本地处理回购协议时,避免旧东西干扰我的自动完成

我浏览过的另一个问题似乎是在寻找更为抽象/专业化的场景,在这些场景中,人们希望将所有分支合并为主分支或类似的组合。相反,我确实希望(在某种意义上)重新开始,只有我的master和master2分支在本地可见并且是最新的。特别是,我有一些尚未合并的分支,但我仍然希望保留,这与建议的不同


如果与理解这是科学计算的回购相关。

您可以使用
-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的分支和另一个分支除外。

如果没有其他分支,则dupe将向您发出启动命令;如果您只想批量删除内容,则可以使用
xargs
命令来实现。