当我执行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
分支“你好”已被删除。 但是,当我取:
$ 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
用“无中生有”,有效地删除远程分支。
需要注意的是git的分支只允许删除本地引用。
git branch -r -D origin/hello
这只是删除本地指针指向一个远程跟踪分支 ,但对远程回购内容本身没有影响。
只有git push origin :hello
,在其他的答案中提到,要那么做。
此外,在不更改配置branch.hello.fetch
:它仍然引用产地/你好,这就是为什么在未来获取在当地的回购将重新创建远程跟踪分支。
git push origin --delete somebranch
是你删除远程分支的方式。 如果你仍然在旧版本的Git,你可能需要使用旧的语法:
git push origin :somebranch
转换为“对原产远程指出,没有推入somebranch”。 该命令的格式是“混帐推(其中远程回购)(什么地方参考):(该远程引用),系统将略(什么参考)被解释为‘把什么’到(其中远程引用),有效地将其删除。在新的语法更加直观。