如何使用Git删除远程分支?

Aly*_*Aly 12 git branch git-branch

我知道之前已经介绍过,但我已经尝试了以下内容,似乎无法删除远程分支.

aly@neon:~/workspace/3DOD_VARIANCE$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/multi_gauss_at_nodes
  remotes/origin/old-state-with-mean-deviation-from-centre
  remotes/origin/variance-branch


aly@neon:~/workspace/3DOD_VARIANCE$ git branch -r -d origin/old-state-with-mean-deviation-from-centre Deleted remote branch origin/old-state-with-mean-deviation-from-centre (was 0ed90b2).


Fetching origin
From https://bitbucket.org/alykhantejani/3dobjectdetection
 * [new branch]      old-state-with-mean-deviation-from-centre -> origin/old-state-with-mean-deviation-from-centre
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,分支已经被重新获取.知道我做错了什么吗?

另外,作为附注,有没有办法让我在删除之前检查这个分支是否已经合并回主人?

n1_*_*n1_ 19

要删除以下的远程分支运行:

git push origin :branch-to-delete
Run Code Online (Sandbox Code Playgroud)

诀窍在冒号


Ase*_*nar 18

完整推送命令如下

git push <remote name> <local branch>:<remote branch>
Run Code Online (Sandbox Code Playgroud)

只需将"无分支"发送到远程服务器:

git push origin :old-state-with-mean-deviation-from-centre
Run Code Online (Sandbox Code Playgroud)

对于旁注:当您使用"git branch -d"时,git会阻止您删除尚未合并的分支(并告诉您如果您确实要删除它仍然使用-D).

另请注意git branch -d -r <branch name>删除.git文件夹中的引用(而不是远程服务器上的真实分支),这就是为什么新的fetch会重新创建它

  • 您可以使用“branch”命令执行的所有操作都涉及您的本地存储库,即 .git 文件夹。`gitbranch -d -r origin/master` 涉及文件 .git/refs/remotes/origin/master (包含 sha1)将被删除,但不会删除服务器上的文件(因为没有分支被命名为“origin/ master”代表分支名称的一部分)。如果你输入 `git push :origin/old-branch` 它将尝试删除不存在的分支“origin/old-branch”(将 origin 作为命名空间)。 (2认同)

Jér*_*ôme 13

来自@Matthew Rankin 的回答

从Git v1.7.0开始,您可以使用以下命令删除远程分支

$ git push <remote_name> --delete <branch_name>
Run Code Online (Sandbox Code Playgroud)


Jan*_*cak 7

尝试

git push origin :remote_branch_to_be_deleted
Run Code Online (Sandbox Code Playgroud)