如何删除远程 Git 分支

当 Git 是本地分支时,在 Git 中删除分支很容易:

git branch -d <branch-name>

但是如果要删除远程分支,情况就不一样了。

让我展示删除远程 Git 分支的步骤。

显示远程分支

查看 全部 远程 Git 存储库中的分支,您可以使用 -a 像这样的标志:

$ git branch -a                    
* master
  test-lhb
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/test-lhb

这是运行的输出 git branch -a 在一个克隆的存储库中 灰尘.

让我们分解一下…

  • remotes 表示远程服务器上的存储库(例如 GitLab, 吉蒂亚 或者 GitHub)
  • origin 是您系统上远程存储库的别名
  • HEAD 如果您没有明确指定分支,则默认分支会被克隆

所以,在第 4 行, remotes/origin/HEAD -> origin/master表示“默认”远程存储库是主分支。

而最后两行表示远程仓库中有两个分支,分别是 mastertest-lhb.

查看有关远程存储库的信息的另一种方法是使用 git remote 命令如下。

$ git remote show origin
* remote origin
  Fetch URL: [email protected]:atheistd/linuxhandbook.git
  Push  URL: [email protected]:atheistd/linuxhandbook.git
  HEAD branch: master
  Remote branches:
    master   tracked
    test-lhb tracked
  Local branches configured for 'git pull':
    master   merges with remote master
    test-lhb merges with remote test-lhb
  Local refs configured for 'git push':
    master   pushes to master   (up to date)
    test-lhb pushes to test-lhb (up to date)

这为您提供了更详细的输出。 使用 git remote 超过 git branch 取决于您的偏好和用例。

删除远程 git 分支

-d (或者 -D 用于强制删除)标志与 git branch 命令删除本地分支。

但是,要从远程存储库中删除分支, git branch 命令将不起作用。

要删除远程 Git 分支,请使用 git push 具有以下语法的命令:

$ git push origin --delete test-lhb
To github.com:atheistd/linuxhandbook.git
 - [deleted]         test-lhb

$ git branch -a
* master
  test-lhb
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

仔细看。 运行 git push 删除远程 Git 分支的命令并没有删除我们的本地分支。

删除 HEAD 分支

HEAD 分支是默认分支的别名。 在大多数存储库中,它设置为 master 分支或到 main 分支。

让我们尝试删除主远程分支…

$ git branch -a
* master
  test-lhb
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/test-lhb

$ git push origin --delete master
To github.com:atheistd/linuxhandbook.git
 ! [remote rejected] master (refusing to delete the current branch: refs/heads/master)
error: failed to push some refs to 'github.com:atheistd/linuxhandbook.git'

由于我们尝试删除 master 分支,它给了我们一个错误并且没有删除远程 Git 分支。

现在您知道如何删除远程 Git 分支,并且如果 HEAD 指向您的 master 或者 main 分支。