GIT:删除没有本地跟踪分支的远程分支

时间:2014-04-24 10:55:58

标签: git branch remote-branch

让我们说git branch -a输出如下内容:

  • A
  • C
  • *主
  • 遥控器/来源/ A
  • 遥控器/来源/ B
  • 遥控器/来源/ C
  • 遥控器/来源/主
  • 遥控器/原点/ X
  • 遥控器/原点/ Y
  • 遥控器/来源/ Z

粗体是远程存储库中的那些分支(X,Y,Z),但我还没有检查过它们,我甚至不打算这样做,它们与我不喜欢的项目有关。参加。

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

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

编辑2 :对mattmilten的评论澄清

您可以使用git pull重新创建所有远程分支,但我始终不会git pull

我经常只是git fetch origin master A B C然后合并或改组或做任何我想要的分支主,A,B或C.

重点是,每当我" git pull" (由于某种原因),我不想要的所有分支都被创建了,似乎我没有简单的选择来删除它们。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我有同样的问题,但情况不同。我删除了本地分支 experiment1 。我先忘了git branch --unset-upstream,所以我仍然有一个远程跟踪分支。分支 experiment1 已从远程删除。

稍后,当我运行git branch -a时,它会继续以remotes/origin/experiment1的形式显示在输出中。 git branch --unset-upstreamgit branch --delete都不会摆脱它,因为本地分支已经消失了。将其引用为 origin / experiment1 而不是 experiment1 也不起作用。

这就是我所做的:

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

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

我要添加这个答案,因为这是Internet搜索“没有本地分支的git remove远程跟踪分支”中的热门话题。另外,这个问题与"Remove tracking branches no longer on remote" question的区别足够大,不能重复。如果我要写自己的问题来回答这个问题,那么该问题将与该问题重复。