Git:如何取消获取远程分支(Github拉取请求)

10

我已经运行了

git fetch upstream +refs/pull/*:refs/remotes/upstream/pr/*
git fetch origin +refs/pull/*:refs/remotes/origin/pr/*

我最终拥有了数百个分支 —— 每个拉取请求(head、merge 和来自 origin 和 upstream 的两个分支)都有 4 个。

我该如何用两步在本地删除这些分支?

我尝试过:

git branch -D refs/remotes/origin/pr/*

但是它显示“未找到”。

3个回答

9

我通常只是从.git/refs和.git/packed-refs中删除文件和行。


1
嗯,那听起来像是一种破坏东西的方式 :) 但我也会尝试。 - Ondra Žižka
10
他们俩再也没有被听到过。 - Jonathan Hartley
哈哈。不,我还活着 :) 但是我回来了,面对同样的问题,这次是一个同事,他会提交他更改的每一行。我需要在我的gitk中“静音”他的分支。 - Ondra Žižka

3
据我所知,没有一个“开箱即用”的命令可以实现你想要的功能,但可以通过链接一些bash命令来解决。
删除本地分支的命令链可能如下所示:
git branch | grep -vE '^\*' | grep 'pr/' | xargs git branch -D

远程分支的版本非常相似,并且在git branch调用中使用-r选项。
git branch -r | grep -vE '^\*' | grep 'pr/' | xargs git branch -rD

哇!谢谢,这太棒了,就像魔法一样!你只需要添加一个远程名称。我刚刚从“origin” 远程中删除了我不需要在克隆的“origin”中的 'main-rt' 远程分支: git br -Dr origin/main-rt。结果是:Deleted remote-tracking branch origin/main-rt (was 8488c870869b). - vladis

2

这似乎非常接近我所需要的,但实际上,这些分支是远程的,我可能需要删除关于远程分支的信息,而不是分支本身。 - Ondra Žižka
具体来说,我想要这个的原因是:数百个远程分支使得管理分支的所有方式都变得混乱 - 图形用户界面、日志、命令行选项卡自动完成等。 - Ondra Žižka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接