[Git] 删除分支
好的,删除 Git 分支分为删除本地分支和删除远程分支两种情况。下面是详细的命令和说明。
删除本地分支
1. 安全删除(已合并的分支)
git branch -d <分支名>
示例:
git branch -d feature/login
2. 强制删除(未合并的分支)
如果分支还没有合并到当前分支,但确定要删除,使用大写的 -D
参数:
git branch -D <分支名>
示例:
git branch -D experiment/untested-feature
删除远程分支
1. 删除远程分支
git push origin --delete <远程分支名>
或者等价的简写形式:
git push origin :<远程分支名>
示例:
git push origin --delete feature/login
# 或
git push origin :feature/login
完整操作流程
步骤 1:查看所有分支
# 查看本地分支(当前分支前有 * 号)
git branch
# 查看所有分支(包括远程分支)
git branch -a
# 查看远程分支
git branch -r
步骤 2:切换到其他分支(不能删除当前所在分支)
# 切换到主分支或其他分支
git checkout main
# 或
git switch main
步骤 3:删除分支
# 删除本地分支
git branch -d feature/login
# 删除远程分支
git push origin --delete feature/login
常用场景和示例
场景 1:删除已合并的功能分支
# 查看分支列表
git branch
# 切换到主分支
git checkout main
# 确保分支已合并(可选)
git merge --abort
# 删除本地分支
git branch -d feature/user-authentication
# 删除远程分支
git push origin --delete feature/user-authentication
场景 2:强制删除未合并的分支
# 切换到主分支
git checkout main
# 强制删除本地分支(即使未合并)
git branch -D experiment/failed-idea
# 删除远程分支
git push origin --delete experiment/failed-idea
场景 3:批量清理已合并的分支
# 删除所有已合并到当前分支的本地分支(保留主分支)
git branch --merged | grep -v "\*" | grep -v "main" | xargs -n 1 git branch -d
# 删除远程已合并的分支(需要先同步)
git fetch --prune
实用技巧和注意事项
1. 删除前确认分支状态
# 查看分支最后的提交
git show-branch <分支名>
# 查看分支是否已合并
git branch --merged # 查看已合并的分支
git branch --no-merged # 查看未合并的分支
2. 同步远程分支信息
删除远程分支后,本地可能还保留着远程跟踪分支的缓存,需要清理:
# 获取最新远程信息并清理已删除的远程分支跟踪
git fetch --prune
# 或
git remote prune origin
3. 恢复误删的分支
如果不小心删错了分支,可以通过提交哈希恢复:
# 查找分支最后的提交哈希
git reflog
# 根据哈希恢复分支
git branch <分支名> <提交哈希>
完整示例
# 查看当前分支状态
$ git branch -a
* main
feature/login
remotes/origin/main
remotes/origin/feature/login
# 切换到主分支
$ git checkout main
Switched to branch 'main'
# 删除已合并的本地分支
$ git branch -d feature/login
Deleted branch feature/login (was a1b2c3d).
# 删除远程分支
$ git push origin --delete feature/login
To https://github.com/user/repo.git
- [deleted] feature/login
# 清理本地远程分支缓存
$ git fetch --prune
总结表格
操作 | 命令 | 说明 |
---|---|---|
删除本地分支(安全) | git branch -d <分支名> | 只能删除已合并的分支 |
删除本地分支(强制) | git branch -D <分支名> | 强制删除未合并的分支 |
删除远程分支 | git push origin --delete <分支名> | 删除远程仓库的分支 |
查看所有分支 | git branch -a | 显示本地和远程分支 |
清理远程缓存 | git fetch --prune | 同步远程分支删除状态 |
⚠️ 重要提醒
- 不能删除当前所在分支:必须先切换到其他分支
- 删除远程分支需要权限:通常需要推送权限到远程仓库
- 删除前确认:特别是强制删除,数据可能无法恢复
- 团队协作:删除共享的远程分支前,确保团队成员都知道
最安全的工作流程:
git checkout main
git branch -d feature/done
git push origin --delete feature/done
git fetch --prune
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭