我创建了一个分支,处理它,将它与基本分支合并,现在想删除它。分支也是在git远程服务器上创建的。
现在当我运行git branch -d分支时,它将其删除并推送它。但我仍然在git远程服务器上看到分支。
我之前在创建此分支时看到了类似的问题,但我无法在远程git服务器上看到它。
我甚至可以从这个分支机构结账。
我在这里遗漏了什么?
答案 0 :(得分:10)
为了扩展这些答案,每个分支基本上存在于三个地方:
origin/foo
origin/foo
的本地副本(通过git fetch
更新)foo
(在git merge origin/foo
之后通过git fetch
更新 - 或者更常见的是,两者都是通过git pull
一起完成的。 git branch -d
删除这三个中的最后一个,即本地分支。 git branch -d -r
将删除远程分支的您的副本(或者您可以在删除本地分支后运行git remote prune origin
。)
要删除远程服务器上的分支,您必须使用git push
。旧的语法是git push origin :branchname
。这是因为语法是localref:remoteref
,例如,可以将计算机上的本地分支推送到具有不同名称的远程分支,例如, git push origin localbranch:remotebranch
。如果您将localbranch
部分留空,则告诉git将 nothing 推送到远程分支,并将其删除。
如果这令人困惑,请不要担心,git开发人员同意你的看法。较新的版本具有--delete
选项,因此git push origin --delete branchname
与git push origin :branchname
的功能相同,但其意图更加明确。
答案 1 :(得分:7)
删除遥控器上的分支
git push remote :refs/heads/development
答案 2 :(得分:3)
使用以下arcane命令删除远程分支:
git push origin :newfeature
您可能希望更新索引,因此跟踪分支也会被删除:
git fetch origin --prune