当前位置: 首页 > 知识库问答 >
问题:

删除所有本地git分支

范豪
2023-03-14
user@machine:~/projects/application[master]$ git branch --merged
  STORY-123-Short-Description
  STORY-456-Another-Description
  STORY-789-Blah-Blah
* master

删除grep-v\*列出的分支的所有尝试(根据下面的答案)都会导致错误:

error: branch 'STORY-123-Short-Description' not found.
error: branch 'STORY-456-Another-Description' not found.
error: branch 'STORY-789-Blah-Blah' not found.

我使用的是:
git 1.7.4.1
ubuntu 10.04
GNU bash,version 4.1.5(1)-release
GNU grep 2.5.4

共有1个答案

闻人宇定
2023-03-14

git branch-d'子命令可以删除多个分支。因此,简化@sblom的答案,但添加了一个关键的xargs:

git branch -D `git branch --merged | grep -v \* | xargs`

或者,进一步简化为:

git branch --merged | grep -v \* | xargs git branch -D 

重要的是,正如@Andrewc指出的,不鼓励使用Git Branch编写脚本。为了避免这种情况,请使用以下内容:

git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main" | xargs git branch -D
$ mkdir br
$ cd br; git init
Initialized empty Git repository in /Users/ebg/test/br/.git/
$ touch README; git add README; git commit -m 'First commit'
[master (root-commit) 1d738b5] First commit
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README
$ git branch Story-123-a
$ git branch Story-123-b
$ git branch Story-123-c
$ git branch --merged
  Story-123-a
  Story-123-b
  Story-123-c
* master
$ git branch --merged | grep -v \* | xargs
Story-123-a Story-123-b Story-123-c
$ git branch --merged | grep -v \* | xargs git branch -D
Deleted branch Story-123-a (was 1d738b5).
Deleted branch Story-123-b (was 1d738b5).
Deleted branch Story-123-c (was 1d738b5).
 类似资料:
  • 我最近开始使用Docker,但从未意识到我应该使用< code>docker-compose down而不是< code>ctrl-c或< code>docker-compose stop来摆脱我的实验。我现在在本地有大量不需要的docker图像。 我可以运行一个标志来删除所有本地docker图像吗 像--all标志这样的东西不存在,但我正在寻找具有类似想法的东西。

  • 问题内容: 我最近开始使用Docker,但从未意识到我应该使用代替或摆脱我的实验。我现在在本地有大量不需要的docker映像。 我是否可以运行一个标志来删除所有本地docker映像和容器? 像--all标志这样的东西并不存在,但是我正在寻找具有类似想法的东西。 问题答案: 要删除所有容器(包括其卷), 要删除所有图像, 请记住,您应先删除所有容器,然后再删除创建这些容器所用的所有图像。 如果您使用

  • 我最近开始使用Docker,但从未意识到我应该使用而不是或来摆脱我的实验。我现在在本地有大量不需要的docker映像。 是否有一个标志我可以运行删除所有本地docker映像和容器? 类似--allFlag的东西不存在,但我正在寻找类似的东西。

  • 我刚刚克隆了一个git存储库并检查了一个分支。我工作了它,然后决定删除所有我的本地更改,因为我想要的原始副本。 简而言之,我必须执行以下两个命令来删除我的本地更改 我的问题是, (1)这是摆脱局部变化的正确方法吗?否则请告诉我正确的方法。 (2)我们什么时候使用,因为即使没有这个命令我也能重置 谢谢 *解决方案:主要编辑:03/26:*用特定于git的术语[跟踪/未跟踪/分段/未分段]替换了许多模

  • 本文向大家介绍git代码不变,删除所有commit记录,包括了git代码不变,删除所有commit记录的使用技巧和注意事项,需要的朋友参考一下 把旧项目提交到Git服务器上,会有很多以前的commit记录。 由于各种各样的原因,不希望在新的Git服务器上显示这些commit信息。 那如何删除这些commit记录,形成一个全新的仓库,并且保持代码不变呢? 参考资料: how to delete al

  • 删除本地镜像 如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为: $ docker image rm [选项] <镜像1> [<镜像2> ...] 用 ID、镜像名、摘要删除镜像 其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。 比如我们有这么一些镜像: $ docker image lsREPOSITORY