删除远程分支

当我执行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重新创建远程跟踪分支的原因。

链接地址: http://www.djcxy.com/p/4069.html

上一篇: Deleting a remote branch

下一篇: Undo working copy modifications of one file in Git?