如何删除本地和远程 Git 分支

删除本地分支用 git branch -d <分支名>(有未合并改动时用 -D 强删);删除远程分支用 git push origin --delete <分支名>。两步缺一不可,删远程分支前请确认已合并或已备份。

最佳实践
Git 分支协作与合并示意

分两步:本地用 git branch -d 分支名 删除(有未合并改动时 Git 会拒绝,确认不要了用 -D 强制);远程用 git push origin --delete 分支名 删除。本地和远程是两个独立的引用,删一边不影响另一边,通常两边都要清理。

标准操作

# 1. 先切到别的分支(不能删除当前所在分支)
git checkout main

# 2. 删除本地分支
git branch -d feature-x        # 安全删除(已合并才允许)
git branch -D feature-x        # 强制删除(丢弃未合并改动)

# 3. 删除远程分支
git push origin --delete feature-x

清理过期的远程引用

别人删了远程分支后,你本地的 origin/feature-x 引用还在,用下面的命令同步清理:

git fetch --prune              # 拉取并清理已删除的远程分支引用
git remote prune origin        # 只清理不拉取

批量清理已合并分支

git branch --merged main | grep -v '^\*\|main' | xargs git branch -d

列出已合并进 main 的本地分支(排除当前分支和 main 本身)逐个删除。

常见问题(FAQ)

Q:删除分支后提交会丢吗?

只要提交已合并进其他分支就不会丢。强删(-D)未合并分支后,提交变成孤立对象,短期内还能通过 git reflog 找到哈希再 git branch 恢复 <hash> 救回,但对象一旦被垃圾回收清理,就不能再依靠 Git 对象库恢复。

Q:报错 "Cannot delete branch checked out at"?

你正站在要删的分支上。先 git checkout main 再删。

Q:远程分支删除后别人本地还有吗?

有。删除只影响远程服务器;其他协作者本地引用要自己跑 git fetch --prune 清理。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台