我跑了git branch -a
* master
remotes/origin/test
remotes/origin/master
我想删除我的远程分支
我试过了
git push origin --delete remotes/origin/test
我有
错误:无法删除'remotes / origin / test':远程引用不存在
它怎么不存在?
我做了一个git branch -a
,我看到它列出了。
我错过了什么吗?
命令git branch -a
显示本地存储库中存在的远程分支。这可能听起来有点令人困惑,但要了解它,您必须了解远程分支和远程存储库中存在的分支之间存在差异。远程分支是映射到远程存储库分支的本地分支。因此,远程分支集代表远程存储库的状态。
更新远程分支列表的常用方法是使用git fetch
。这将自动从远程获取分支的更新列表,并在本地存储库中设置远程分支,同时获取您可能缺少的任何提交对象。
但是,默认情况下,git fetch
不会删除远程分支,这些分支在远程分支上不再具有对应分支。为此,您明确需要修剪远程分支列表:
git fetch --prune
这将自动摆脱遥控器上不再存在的远程分支。之后,git branch -r
将向您显示遥控器上真正存在的分支的更新列表:以及您可以使用git push
删除的分支。
话虽这么说,为了使用git push --delete
,您需要在远程存储库中指定分支的名称;不是远程分支的名称。因此,要删除分支test
(由您的远程分支origin/test
表示),您将使用git push origin --delete test
。
remotes/origin/test
的含义是你在远程服务器test
中有一个名为origin
的分支。所以命令就是
git push origin --delete test
删除原点中的分支有一个快捷方式:
git push origin :<branch_name>
这与做git push origin --delete <branch_name>
相同
git push origin --delete yourBranch
git fetch # synchronize with the server
git branch --remote # list remote branches
origin/HEAD -> origin/master
origin/develop
origin/master
origin/deleteme
git push origin --delete deleteme
一个方便的单行程序从原点删除除“master”以外的分支:
git branch --remotes | grep -v 'origin/master' | sed "s/origin\///" | xargs -i{foo} git push origin --delete {foo}
在这样做之前,请务必了解运行此操作的含义!
鉴于远程分支是远程分支/原点/测试,您可以使用两种方式:
git push origin --delete test
和
git branch -D -r origin/test
git branch -a
将列出您本地的分支,而不是远程分支。
错误error: unable to delete 'remotes/origin/test': remote ref does not exist
表示您的遥控器中没有该名称的分支,但该分支存在于您的本地。
git push origin --delete origin/test
也应该工作