当我执行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
我很困惑。
我认为它已被删除,但它仍然存在。
答案 0 :(得分:6)
您需要使用以下命令将其从遥控器中删除:
git push origin --delete hello
当您运行git branch -rd origin/hello
时,您只会删除本地分支。上面的代码将其从原始仓库中删除。
答案 1 :(得分:3)
git push origin :remotebranch
其他所有内容仅在本地存储库上运行。 在更新版本的git中,您也可以
git push origin --delete remotebranch
根据documentation,--delete
表示与使用冒号前缀所有引号相同的“。
如果您想知道:
的含义,它会遵循push
的标准语法。通常,你会写
git push origin localbranch:remotebranch
但是在这里,您将localbranch
替换为“nothing”,实际上删除了远程分支。
答案 2 :(得分:1)
请注意,git branch仅允许删除本地引用。
git branch -r -D origin/hello
仅删除指向 remote tracking branch 的本地指针,但这对远程回购内容本身没有影响。
只有其他答案中提到的git push origin :hello
才会这样做。
另外,这不会改变配置branch.hello.fetch
:它仍然引用origin / hello,这就是下一次获取将在本地仓库中重新创建远程跟踪分支的原因。
答案 3 :(得分:0)
git push origin --delete somebranch
是删除远程分支的方式。如果您仍然使用旧版本的Git,则可能需要使用旧语法:
git push origin :somebranch
转换为“将任何东西推入原点指向的遥控器上的某个分支”。该命令的形式为“git push(哪个远程repo)(什么是本地引用):(哪个远程引用)。省略(什么引用)被解释为”什么都没有“(哪个远程引用),有效地删除它。更新的语法更直观。