如何修复Git提交失误,恢复2.yaml并保留后续有效提交更改?
更优解决方案
不需要丢弃整个错误提交,直接针对2.yaml文件操作即可,两种方案可选:
方案一:不修改提交历史(适合已推送至远程的情况)
这种方式不会改动已有提交记录,避免影响协作的其他人员:
- 从正确版本
7ceda62恢复2.yaml:git restore --source=7ceda62 -- 2.yaml - 暂存恢复后的文件:
git add 2.yaml - 提取后续两次提交中对
2.yaml的有效更改(-n参数仅应用更改不自动提交,方便检查):git cherry-pick -n 317724 -- 2.yaml git cherry-pick -n e592af -- 2.yaml - 检查
2.yaml内容无误后提交:git commit -m "修复2.yaml:恢复正确基础版本并应用317724、e592af中的有效更改"
方案二:修正提交历史(适合仅本地未推送的情况)
如果这些提交还没推送到远程,可以用交互式变基整理干净的历史:
- 启动交互式变基,以正确版本
7ceda62为起点:git rebase -i 7ceda62 - 在弹出的编辑器中,把错误提交
2d1f43对应的行开头pick改为edit,保存退出。 - 恢复
2.yaml到错误提交前的状态:git restore --source=HEAD^ -- 2.yaml - 暂存并修正错误提交:
git add 2.yaml git commit --amend --no-edit - 继续完成变基,将后续提交重新应用:
git rebase --continue
两种方案都能保留后续两次提交的有效更改,且比你原本的手动合并+cherry-pick更高效。
内容的提问来源于stack exchange,提问作者Ahamed Kamal
相关产品推荐
相关产品推荐

