Git教程:如何删除中间提交?
解决方法
要删除commit A并将提交历史调整到目标状态,可使用Git的变基(rebase)操作,以下是两种常用方案:
方案一:交互式变基(直观易操作)
- 确保当前处于
feature/foo分支:git checkout feature/foo - 执行交互式变基命令,以
master为基准整理提交:git rebase -i master - 此时会打开文本编辑器,里面会列出从
master分支分叉后的所有提交(顺序为commit A、commit B、commit C,旧提交在前):- 找到
commit A对应的行,将开头的pick替换为drop,或者直接删除该行 - 保存并退出编辑器
- 找到
- 如果变基过程中出现冲突,先手动解决文件冲突,执行
git add <冲突文件>后继续变基:git rebase --continue
方案二:精准变基(适合明确提交哈希的场景)
若知道commit A的哈希值(假设为<A-hash>),可直接将commit A之后的提交(B和C)移到master分支顶端,跳过commit A:
git rebase --onto master <A-hash>
注意事项
- 如果
feature/foo分支已推送到远程仓库,调整历史后需要强制推送:
强制推送前请确认团队内没有其他成员基于该分支开发,避免代码冲突。git push -f origin feature/foo
内容的提问来源于stack exchange,提问作者DarkTrick
相关产品推荐
相关产品推荐

