如何删除Git的新commit记录并保留改动合并到更早的旧提交
Git提交合并操作指南
你需要将最新的两次提交改动合并到最早的commit 3中,同时删除前两次的提交记录,可按以下两种方案操作:
方案一:软重置方案(适配当前场景,操作更简单)
- 执行软重置命令,将HEAD指针回退到commit 3,同时保留commit 1、commit 2的所有改动:
git reset --soft HEAD~2
- 将暂存区的所有改动合并到commit 3中,执行后可以编辑最终的提交信息:
git commit --amend
方案二:交互式rebase方案(适合更复杂的提交合并场景)
- 先查询commit 3对应的哈希值:
git log --oneline
- 执行交互式rebase命令,假设查询到commit 3的短哈希为
a1b2c3:
- 如果commit 3不是仓库的初始提交,执行:
git rebase -i a1b2c3^
- 如果commit 3是仓库的第一个提交,执行:
git rebase -i --root
- 在弹出的编辑器中,将commit 1、commit 2前面的
pick修改为s(squash的缩写),修改后内容参考如下:
pick a1b2c3 commit 3 s 4d5e6f commit 2 s 7g8h9i commit 1
- 保存退出编辑器后,在新弹出的提交信息编辑页调整最终的提交信息,保存后即完成合并。
注意事项
如果之前已经将commit 1、commit 2推送到远程仓库,操作完成后需要执行git push -f强制推送覆盖远程的提交记录,多人协作分支操作前请提前和团队成员同步,避免影响他人提交。
内容的提问来源于stack exchange,提问作者adnntfr
相关产品推荐
相关产品推荐

