我有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
从本地服务器删除了两个分支。
如果错误发生,因为存储库中不存在分支 为什么它进入远程分支列表?
和
有没有办法强制删除远程分支?
感谢您的时间。
答案 0 :(得分:19)
你必须这样做:
git remote prune origin
删除本地git存储库中的远程跟踪分支(prune将删除远程源中不存在的任何分支)。之后,您将无法在git branch -a
答案 1 :(得分:8)
您所看到的分支就是所谓的远程[跟踪]分支。它位于本地存储库中,它代表您在远程存储库中看到该分支的最后一个位置。 Git使用这样的分支,这样你就不必每次想要处理远程存储库;您只需更新/获取一次,远程货架分支就会更新,您可以从中进行操作。在您的情况下,远程存储库中的分支很久就被删除了;您只需要删除本地存储库中的副本。
有两种主要方法可以删除它:
git branch -d -r origin/pending-issues-in-project
只删除该分支;和git remote prune origin
删除所有此类陈旧的远程分支。您也可以同时更新:git remote update --prune origin
答案 2 :(得分:0)
原谅我笨拙的英语。我希望你能理解我的答案。
命令git push origin :pending-issues-in-project
可能是错误的。也许你的意思是:git push origin pending-issues-in-project
。它将分支推送到github。
如果错误即将发生,因为存储库中不存在分支,那么为什么它会进入远程分支列表?
由于git是一个分布式版本控制系统,github的服务器有一个数据库来存储.git repo和你推送给它的数据。因此,如果您使用命令:git branch -de branchName
,它只会删除本地分支,并且不会干扰github的.git以及您推送给它的数据。
有没有办法强制删除远程分支? 对的,这是可能的。命令是:
git push origin --delete <branchName>
如果您想了解有关git版本控制系统的分发功能的更多信息,您可能会发现此链接很有用:git's distributed feature。
如果您想了解更多关于通过git删除github上的分支的信息,您可以阅读here。