如何删除除master之外的所有本地分支,并在一个没有别名的命令中开发



在使用Git Flow或类似工作流处理存在多个稳定分支的项目时,我会创建许多功能分支(feature/do-something-1hotfix/fix-bug-1等(。

有时我需要清除本地分支机构的列表,因为用几十个基本分支机构根本不可能管理它们。我通常通过将分支名称复制并粘贴到git branch -d命令中,一次删除一个。但它需要很长时间,因此删除整个存储库并再次克隆更容易。

我想在一个命令中删除除masterdevelop之外的所有内容(无需编写额外的shell脚本/别名(,但我在互联网上找到的所有解决方案都只允许您删除除一个分支(例如master(之外的所有项目。这不是一个合适的解决方案。有人遇到过类似的问题吗?

让我们分步骤执行,这样我们就可以分解命令并了解它的作用:

git branch | grep -v " master$" | grep -v " develop$" | xargs git branch -D

注意:不能删除当前已签出的分支

逐步

zrrbite@ZRRBITE MINGW64 /d/dev/branch_del_test (master)
$ git branch
develop
* master
test
test2
zrrbite@ZRRBITE MINGW64 /d/dev/branch_del_test (master)
$ git branch | grep -v " master$"
develop
test
test2
zrrbite@ZRRBITE MINGW64 /d/dev/branch_del_test (master)
$ git branch | grep -v " master$" | grep -v " develop$"
test
test2
zrrbite@ZRRBITE MINGW64 /d/dev/branch_del_test (master)
$ git branch | grep -v " master$" | grep -v " develop$" | xargs git branch -D
Deleted branch test2 (was 7767978). <-- only the output of the last xargs run is shown
zrrbite@ZRRBITE MINGW64 /d/dev/branch_del_test (master)
$ git branch
develop
* master

以下是相同答案的一个更简单的变体:

git branch -D $(git branch | grep -v -e "master$" -e "develop$")

最新更新