5

假设git branch -a输出如下:

  • 一个
  • C
  • *掌握
  • 遥控器/原点/A
  • 遥控器/原点/B
  • 遥控器/原点/C
  • 遥控器/原点/主控
  • 遥控器/原点/X
  • 遥控器/原点/Y
  • 遥控器/原点/Z

粗体字是远程存储库中的那些分支(X、Y、Z),但我还没有检查它们,我什至不打算检查它们,它们与我不参与的项目有关。

是否有命令删除所有没有本地跟踪分支的远程分支(那些保存在我的存储库中,而不是远程中的实际远程分支)?

编辑:我打算删除保存在我的存储库中的远程分支,显示远程分支的存在。我不想删除遥控器中的实际分支。

编辑 2:对 mattmilten 的评论中的澄清

您可以使用 重新创建所有远程分支git pull,但我并不总是这样git pull

我经常只是git fetch origin master A B C然后合并或变基或对分支 master、A、B 或 C 做任何我想做的事情。

关键是,每当我“git pull”(出于某种原因)时,都会创建我不想要的所有分支,而且之后我似乎没有简单的选择来删除它们。

4

2 回答 2

1

不,这是不可能的。有关(所有)分支的信息是您的存储库的一部分,并且在创建新克隆时将始终被复制。您需要忽略这些分支或简单地运行git branch以仅列出您的本地分支。

如果您删除有关远程分支存在的信息,您将如何在以后检索远程分支?

于 2014-04-24T13:36:43.277 回答
1

我遇到了同样的问题,但情况不同。我删除了一个本地分支Experiment1。我忘了git branch --unset-upstream先,所以我还有一个远程跟踪分支。之后从远程删除了分支Experiment1 。

后来,当我运行时git branch -a,它一直在输出中显示为remotes/origin/experiment1. 也git branch --unset-upstream不会git branch --delete摆脱它,因为当地的分支机构已经消失了。将其引用为origin/experiment1不是Experiment1也不起作用。

所以这就是我所做的:

  1. cd .git/refs/remotes/origin
  2. rm experiment1

它不再显示在输出中,并且正常的 Git 同步命令在之后按预期工作。

我添加这个答案是因为这是互联网搜索“git remove remote-tracking branch without local branch”中的热门搜索。此外,此问题与“删除不再远程上的跟踪分支”问题足够不同,不会重复。如果我要写我自己的问题来回答这个答案,那么这个问题将是这个问题的重复。

于 2019-08-17T17:42:04.160 回答