从GitHub中删除分支

时间:2011-12-02 16:32:30

标签: git svn github

大约3周前,我从本地存储库中删除了一些分支,但从未在GitHub上的存储库中删除它们。我需要清理其中一些分支,但是没有成功。

例如,我在3周前从本地删除了这个分支:1234e-proj

现在我正在尝试运行:

git push origin :1234e-proj

我收到此错误:

error: unable to push to unqualified destination: 1234e-proj
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

知道我做错了什么吗?我已经在我当地删除了几个分支机构。

2 个答案:

答案 0 :(得分:1)

您是否尝试使用

git push --delete origin '1234e-proj'

git push --mirror origin # warning: pushes all refs and deletes all others!

否则,应该工作。也许你可以分享

的输出
git branch -a

答案 1 :(得分:1)

首先,一个疯狂的猜测:那些分支实际上仍然存在于GitHub仓库中,在网络上可见,或者您只是将它们视为您回购中的远程分支? (运行git remote update --prune更新内容;如果它们仅在您的本地仓库中,则会修剪它们。)

使用git ls-remote origin打印遥控器上的参考,如遥控器所见,例如:

406da7803217998ff6bf5dc69c55b1613556c2f4    HEAD
1e501a7c47ad5ada53d3b1acfb9f131f76e969ec    refs/heads/maint
406da7803217998ff6bf5dc69c55b1613556c2f4    refs/heads/master
56e79320f3d9b044c380dfebf136584aaa17ac5b    refs/heads/next
...

找到您要删除的内容,然后使用git push :<ref>删除,例如git push :refs/heads/branch-foo

我不完全确定你发生了什么,但假设遥控器上确实存在refs,这应该是一种查看和删除它们的简单方法。我最好的猜测是你在GitHub上看到的引用实际上并不在refs/heads中,所以使用不合格的refname不起作用。 (不过我不确定你是怎么在这种情况下结束的!