15

我有 2 个远程分支:

 - pending-issues-in-project
 - new-issues-in-project

我试图pending-issues-in-project像这样删除:
git push origin :pending-issues-in-project,但我得到了错误:

error: unable to push to unqualified destination: pending-issues-in-project
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.  
error: failed to push some refs to 'git@github.com:forkedRepo/RepoName.git'

所以我想可能是我删除了pending-issues-in-project分支,但是当我运行
git branch -a它时,它会在列表中显示pending-issues-in-project分支。
当我尝试相同(尝试删除)时new-issues-in-project,它起作用了。
我已经使用git branch -D branchName.

如果由于存储库中不存在该分支而出现错误,那么为什么它会出现在远程分支列表中?

没有办法强制删除远程分支?

谢谢你的时间。

4

2 回答 2

20

你所要做的:

git remote prune origin

删除本地 git 存储库中的远程跟踪分支( prune 删除远程源中不再存在的任何分支)。之后,您将看不到它git branch -a

于 2012-01-06T06:28:41.500 回答
10

您看到的分支是所谓的远程 [跟踪] 分支。它在您的本地存储库中,它代表您在远程存储库中最后一次看到该分支的位置。Git 使用这样的分支,这样您就不必每次想要处理它时都与远程存储库交谈;您只需更新/获取一次,远程货架分支就会更新,您可以从中工作。在您的情况下,远程存储库中的分支早已被删除;您只需要删除本地存储库中的副本。

有两种主要的删除方法:

  • git branch -d -r origin/pending-issues-in-project只删除那个分支;和
  • git remote prune origin删除所有这些陈旧的远程分支。也可以同时更新:git remote update --prune origin
于 2012-01-06T14:05:20.523 回答