2012-01-06 87 views
14

我有2个远程分支机构:如何强制删除GitHub中的远程分支?

- 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 '[email protected]:forkedRepo/RepoName.git' 

,所以我想可能是我已经删除了pending-issues-in-project分支,但是当我运行
git branch -a它显示pending-issues-in-project分支在列表中。
当我尝试相同(尝试删除)new-issues-in-project,它的工作。
我已经使用git branch -D branchName从本地服务器中删除了两个分支。

如果错误发生是因为分支不在存储库中,那么 为什么它进入远程分支列表?

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

谢谢你的时间。

+0

'git branch -r'给你什么? – 2012-01-06 06:28:37

+0

其给出的分支列表也具有起源/待定问题在项目中,我试图删除。 – 2012-01-06 06:34:39

回答

19

你要做的:

git remote prune origin 

清除在本地的Git仓库远程跟踪分支(删节删除不远程起源存在了任何分支)。之后,你不会看到它下面git branch -a

7

你看到的分支是所谓的远程[追踪]分支。它位于您的本地存储库中,它代表您在远程存储库中看到该分支的最后一个位置。 Git使用这样的分支,以便每次处理时都不必与远程存储库通信;你只需更新/获取一次,远程机架分支就会更新,而且你可以从中进行工作。在你的情况下,远程仓库中的分支已经被删除很久了;您只需要删除本地存储库中的副本。

有删除它主要有两种方式:

  • git branch -d -r origin/pending-issues-in-project删除只是一个分支;和
  • git remote prune origin删除所有这些过时的远程分支。您也可以同时更新:git remote update --prune origin
0

原谅我笨拙的英语。我希望你能理解我的答案。

  1. 该命令git push origin :pending-issues-in-project可能是错误的。也许你的意思是:git push origin pending-issues-in-project。它推动了一个分支到github。

  2. 如果错误是由于分支不存在于存储库中,那么为什么它来到远程分支列表? 由于git是一个分布式版本控制系统,github的服务器有一个数据库来存储.git repo和你推送给它的数据。所以,如果你使用命令:git branch -de branchName,它只是删除本地分支,它不会干扰github的.git和你推送给它的数据。

  3. 有没有办法强制删除远程分支? 是的,这是可能的。命令是:

    git push origin --delete <branchName> 
    
  4. 如果您想了解更多关于Git版本控制系统的发布功能,你会发现这个链接有用:git's distributed feature

    如果你想知道更多关于通过git删除github上的分支,你可以阅读关于它here

+0

你到底在问什么?我很抱歉,但即使在我编辑了你的帖子后,我仍然难以理解。 – Quillion 2013-09-18 15:50:44