Git:如何将修改追加至非最新提交及撤销错误的--amend操作
解决Git错误--amend后的恢复与正确追加修改
一、撤销错误的--amend操作
git commit --amend本质是生成一个新提交替换当前HEAD指向的提交(也就是你误操作时的version 2),但原version 2提交并未被删除,可通过操作日志找回:
- 查看本地提交操作日志,定位原
version 2的提交哈希:
git reflog
日志里会显示类似如下记录,找到对应version 2的条目,最左侧的字符串就是目标哈希:
abc123 HEAD@{0}: commit (amend): version 1 def456 HEAD@{1}: commit: version 2
- 将分支重置到原
version 2提交,恢复修改前的历史:
git reset --hard def456
执行后,分支会回到最初的状态:version 2在上、version 1在下,你之前的新修改会回到工作区/暂存区。
二、将新修改正确追加到原version 1提交
要把新修改合并到更早的version 1提交中,使用交互式rebase即可:
先将新修改暂存(如果还在工作区,执行
git add .)。启动交互式rebase,目标指向
version 1的父提交:
假设原version 1的哈希是ghi789,执行:
git rebase -i ghi789^
如果确定version 1是倒数第二个提交,也可以简化为:
git rebase -i HEAD~2
在弹出的编辑器中,找到
version 1对应的行,将开头的pick改为edit,保存并退出。此时Git会停在
version 1的提交状态,执行命令将新修改追加进去:
git commit --amend
确认提交信息保持version 1后,保存退出。
- 继续完成rebase流程:
git rebase --continue
最终你的提交历史会恢复为version 2在上,包含新修改的version 1在下的正确状态。
内容的提问来源于stack exchange,提问作者Rohan
相关产品推荐
相关产品推荐

