通过GIT删除远程分支

我跑了git branch -a

 * master remotes/origin/test remotes/origin/master 

我想删除我的远程分支

我试过了

 git push origin --delete remotes/origin/test 

我有

错误:无法删除“远程/原点/testing”:远程参考不存在

它怎么不存在?

我做了一个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的含义是,您在远程服务器origin有一个名为test的分支。 所以命令就是了

 git push origin --delete test 

有一个快捷方式可以删除原始分支:

git push origin :<branch_name>

这和做git push origin --delete <branch_name>

git push origin --delete yourBranch

  1. 得到远程分支的列表
 git fetch # synchronize with the server git branch --remote # list remote branches 
  1. 你应该得到一个远程分支的列表:
 origin/HEAD -> origin/master origin/develop origin/master origin/deleteme 
  1. 现在,我们可以删除分支:
 git push origin --delete deleteme 

git branch -a将列出你的本地分支,而不是你的远程分支。

和错误error: unable to delete 'remotes/origin/test': remote ref does not exist意味着你没有在你的远程名称分支,但分支存在于您的本地。

从原点删除除“主”之外的分支的方便的一行:

 git branch --remotes | grep -v 'origin/master' | sed "s/origin\///" | xargs -i{foo} git push origin --delete {foo} 

一定要明白在这样做之前运行它的意义!

 git push origin --delete origin/test 

应该也能工作