在 git 中删除分支(包括本地分支和远程分支)可以通过以下命令实现:
1. 删除本地分支
git branch -d <branch-name> # 安全删除(检查是否已合并) git branch -d <branch-name> # 强制删除(未合并也会删除)
示例:
git branch -d feature/login # 删除已合并的 feature/login 分支 git branch -d hotfix/bug # 强制删除未合并的 hotfix/bug 分支
注意:
-d会检查分支是否已合并到当前分支,未合并则拒绝删除。-d强制删除,即使分支未合并(慎用)。
2. 删除远程分支
git push origin --delete <branch-name> # 标准写法 git push origin :<branch-name> # 旧式写法(等效)
示例:
git push origin --delete feature/login # 删除远程的 feature/login 分支
注意:
- 需要本地有权限操作远程仓库(如 github/gitlab 的推送权限)。
3. 批量删除分支
删除所有已合并到当前分支的本地分支(保留main/master/develop)
git branch --merged | grep -ve "main|master|develop" | xargs git branch -d
作用:
git branch --merged列出已合并的分支。grep -ve排除保留的分支(如main)。xargs git branch -d删除剩余分支。
删除所有匹配名称的远程分支(如清理fix/前缀分支)
git branch -r | grep 'origin/fix/' | sed 's/origin\///' | xargs -i {} git push origin --delete {}
4. 常见问题
问题 1:删除分支时报错 “not fully merged”
原因:分支未合并到当前分支,但代码可能已通过其他方式合并(如 pr)。
解决:使用 -d 强制删除:
git branch -d <branch-name>
问题 2:远程分支已删除,但本地仍能看到
原因:本地缓存了远程分支信息。
解决:同步远程分支状态:
git fetch -p # -p 或 --prune 清理本地缓存的已删除远程分支
操作总结
| 场景 | 命令 |
|---|---|
| 安全删除本地分支 | git branch -d <branch-name> |
| 强制删除本地分支 | git branch -d <branch-name> |
| 删除远程分支 | git push origin --delete <branch-name> |
| 清理已合并的本地分支 | git branch --merged | grep -ve "main|master" | xargs git branch -d |
| 同步远程分支状态 | git fetch -p |
注意事项
删除前确认分支内容:
- 使用
git log <branch-name>或git show <branch-name>检查分支提交。
协作分支谨慎删除:
- 确保其他成员不再需要该分支(如通过团队沟通)。
恢复误删分支:
- 如果误删未合并的分支,可通过
git reflog找到提交哈希并重建分支。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论