删除远程分支

时间:2012-09-05 06:21:19

标签: git branch

当我执行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

我很困惑。
我认为它已被删除,但它仍然存在。

4 个答案:

答案 0 :(得分:6)

您需要使用以下命令将其从遥控器中删除:

git push origin --delete hello

当您运行git branch -rd origin/hello时,您只会删除本地分支。上面的代码将其从原始仓库中删除。

答案 1 :(得分:3)

delete a remote branch,请使用

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)(什么是本地引用):(哪个远程引用)。省略(什么引用)被解释为”什么都没有“(哪个远程引用),有效地删除它。更新的语法更直观。