通过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
- 得到远程分支的列表
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
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
应该也能工作