
刪除 git 本地分支比較容易,可直接使用命令:
但是要刪除一個遠程的 git 分支,就不一樣了,我們今天介紹一下刪除遠程 git 分支的步驟。
查看遠程分支列表
要查看遠程 git 倉庫中的所有分支,可使用 -a 選項,如下所示:
$ git branch -a
? master
dev
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/dev
上述是在 clone 的一個 dust 倉庫中運行 git branch -a 的輸出結果。我們把這個結果分解來看:
- remotes:指遠程服務器上的存儲庫(如 GitLab、Gitea 或 GitHub);
- origin:系統中遠程倉庫的別名;
- HEAD:默認分支,如果沒有指定分支,則 clone 該分支。
如上所述,上述代碼中第 4 行, remotes/origin/HEAD -> origin/master,表示遠程倉庫默認的分支是 master 分支。
最后兩行表示在遠程倉庫中有兩個分支,即 master 和 dev。
另外一種查看遠程倉庫信息的方法是使用 git remote 命令,如下所示:
$ git remote show origin
? remote origin
Fetch URL:??git@github.com??:liugl/proj.git
Push URL:??git@github.com??:liugl/proj.git
HEAD branch: master
Remote branches:
master tracked
dev tracked
Local branches configured for 'git pull':
master merges with remote master
dev merges with remote dev
Local refs configured for 'git push':
master pushes to master (up to date)
dev pushes to dev (up to date)
git remote 命令的輸出信息更加詳細。這兩個查看分支的命令,大家可以根據各自喜好和習慣來選擇使用。
刪除遠程 git 分支
在 git branch 命令后使用 -d(或者 -D 表示強制刪除)選項可用于刪除本地分支。
但是要刪除遠程倉庫中的分支,使用 git branch 命令是不起作用的。要刪除遠程 git 分支,還需要使用 git push 命令,如下語法所示:
$ git push origin --delete dev
To ??github.com??:liugl/proj.git
? [deleted] dev
$ git branch -a
? master
dev
remotes/origin/HEAD -> origin/master
remotes/origin/master
如上刪除中,使用 git push 命令刪除遠程 git 分支后,并沒有刪除本地分支。
刪除HEAD分支
HEAD 分支是默認分支的別名,在大多數存儲庫中,默認分支為 master 或者 main。
接下來我們嘗試一下刪除遠程默認分支...
$ git branch -a
? master
dev
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/dev
$ git push origin --delete master
To ??github.com??:liugl/proj.git
! [remote rejected] master (refusing to delete the current branch: refs/heads/master)
error: failed to push some refs to '??github.com??:liugl/proj.git'
如上所示,當我們嘗試刪除主分支的時候,拋出了一個錯誤,刪除失敗。也就是說,(一般情況下)主分支無法刪除。