Git rebase删除指定提交失败,如何解决该问题?
如何删除Git仓库中的指定提交
先确认提交范围,选对rebase起点
首先得明确你要删的黄色提交在历史里的位置。按你说的提交顺序:15e9b64(2.9.0) → [黄色标记提交] → 2.9.1 → fa7c710(2.9.2),那你得基于黄色提交的父提交启动交互式rebase,命令是:
git rebase -i 15e9b64^
这里15e9b64^代表2.9.0提交的父提交,这样rebase会覆盖从父提交之后的所有提交(包括黄色提交、2.9.1、2.9.2),确保目标提交在处理范围内。
交互式rebase的正确操作
打开rebase编辑界面后,找到对应黄色提交的行,要么把开头的pick改成drop,要么直接删掉该行,然后保存退出编辑器。
先重置混乱的状态(如果之前操作出错)
要是之前的操作把HEAD搞乱了,先执行命令回到rebase前的分支状态:
git rebase --abort
之后再重新执行上面正确的rebase命令。
远程分支的更新(如果分支已推送到远程)
如果这个分支已经推送到远程仓库,删除提交后需要强制推送更新,推荐用更安全的命令:
git push --force-with-lease
--force-with-lease比直接--force更稳妥,能避免意外覆盖其他人的提交。
常见问题排查
- 要是选的rebase范围不对(比如只包含到2.9.1),黄色提交不在处理范围内,自然删不掉,一定要确保rebase包含目标提交及其之后的所有提交。
- 检查编辑rebase文件时有没有选对行,别把提交哈希或版本对应的行搞混了。
- 确认自己在正确的分支上操作,执行
git branch就能看到当前分支。
内容的提问来源于stack exchange,提问作者Divyanshu Bhujbal
相关产品推荐
相关产品推荐

