Git:删除本地分支
最后更新
分支的工作合并之后,用 git branch -d <branch> 删除它。如果分支上有没合并到任何地方的提交,Git 会拒绝删除,这是一道安全检查。如果还是要删除,就用大写的 -D。删除本地分支永远不会影响远程仓库上的那一份,那需要另一条命令。
在终端在线编辑器中试试这些命令:浏览器里就有一个真正的 shell,无需安装任何东西。
语法
| 命令 | 作用 |
|---|---|
git branch -d feature | 删除 feature(仅当它已合并) |
git branch -D feature | 即使未合并也强制删除 feature |
git branch -d branch1 branch2 | 一次删除多个分支 |
常见用法
| 目标 | 命令 |
|---|---|
| 删除已合并的分支 | git branch -d old-feature |
| 强制删除未合并的分支 | git branch -D scratch |
| 删除当前所在的分支 | 先 git switch main,再 git branch -d feature |
| 查看哪些分支已合并 | git branch --merged |
完整示例
完成一个功能,合并它,然后清理本地分支。
| 步骤 | 命令 | 结果 |
|---|---|---|
| 1 | git switch main | 离开要删除的分支 |
| 2 | git merge feature | 把功能分支的提交合并到 main |
| 3 | git branch -d feature | 删除已经合并的分支 |
Git 删除本地分支常见问题
git branch -d 和 -D 有什么区别?
-d 是安全删除:只有当分支的提交已经合并到另一个分支时,Git 才会删除它,所以你不会意外丢失工作。-D 是强制删除(--delete --force 的简写):无论如何都会删除分支,即使上面有未合并的提交。默认使用 -d,只有在你确定要丢弃这个分支的提交时才用 -D。如何删除当前所在的分支?
你不能删除当前检出的分支。先用
git switch main(或 git checkout main)切换到另一个分支,然后运行 git branch -d feature。如果你尝试删除当前分支,Git 会报错“Cannot delete branch ... checked out”。删除本地分支会删除 GitHub 上的分支吗?
不会。
git branch -d 只会从你的本地仓库中删除分支。远程仓库(GitHub、GitLab 等)上的分支会一直存在,直到你用 git push origin --delete feature 单独删除它。删除的分支还能恢复吗?
如果是最近删除的,通常可以。运行
git reflog 找到分支原来指向的提交,然后用 git branch feature <commit-hash> 重新创建它。这些提交不会马上被垃圾回收,所以误删的分支一般都能恢复。可以在线练习吗?
可以。打开终端在线编辑器,就能在浏览器里真正的 shell 中运行这些命令,无需安装任何东西。想系统学习的话,Coddy 免费的互动式 Git 课程会一步步带你从第一次提交学到分支和合并。