删除远程分支
当我执行branch -a
:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/hello
remotes/origin/master
然后我删除分支:
$ git branch -r -D origin/hello
Deleted remote branch origin/hello (was c0cbfd0).
现在我明白了:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
分支“hello”已被删除。 但是当我获取:
$ git fetch
From localhost:project
* [new hello] hello -> origin/hello
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/hello
remotes/origin/master
我很困惑。
我认为它已被删除,但仍然存在。
您需要使用以下命令将其从远程移除:
git push origin --delete hello
当你运行git branch -rd origin/hello
你只会删除你的本地分支。 上面的代码将它从原始仓库中删除。
要删除远程分支,请使用
git push origin :remotebranch
其他一切只在本地存储库上运行。 在更新的git版本中,你也可以
git push origin --delete remotebranch
根据文档,-- --delete
意味着相同的“作为前缀所有引用冒号”。
如果你想知道的含义:
,它遵循的标准语法push
。 通常,你会写
git push origin localbranch:remotebranch
但是在这里,您将localbranch
替换为“nothing”,从而有效地删除远程分支。
请注意,git分支只允许删除本地引用。
git branch -r -D origin/hello
这只会删除本地指针到远程追踪分支 ,但这对远程repo内容本身没有影响。
只有git push origin :hello
,正如其他答案中提到的那样,会这样做。
另外,这并不会改变配置branch.hello.fetch
:它仍然引用origin / hello,这就是为什么下一次获取会在本地branch.hello.fetch
重新创建远程跟踪分支的原因。