如何修复Git因commit amend产生的平行提交,还原单一提交历史
修复提交历史为单一提交的步骤
第一步:定位目标提交哈希
先运行命令查看简洁版提交日志,找到你最初提交5个文件的那个记录(也就是冗余合并出现之前的提交):
git log --oneline
日志会显示类似示例的内容:
a1b2c3 Merge branch 'main' from github.com/xxx/xxx d4e5f6 修复文件后的修订提交 g7h8i9 最初提交5个文件的版本
记下g7h8i9这类合并提交之前的哈希值。
第二步:重置并重新修订提交
执行软重置,回到原始提交状态,同时保留你对文件的清理改动:
git reset --soft g7h8i9
接着重新把修改合并到原始提交里:
git commit --amend -m "你的原始提交信息(可修改或保留原内容)"
此时本地提交历史已变成单一的修订后提交,无冗余合并记录。
第三步:强制推送覆盖远程
因为改写了远程已存在的提交历史,必须用强制推送覆盖远程分支:
git push -f origin main
如果你的分支不是main,替换成对应的分支名即可。
界面操作替代方案(PHPStorm)
- 在
Git工具窗口的Log标签里找到原始提交(合并前的记录) - 右键该提交,选择
Reset Current Branch to Here,在弹窗里选Soft模式 - 回到
Local Changes,点击Commit按钮,勾选Amend commit选项,完成提交 - 推送时在弹窗里勾选
Force push选项确认推送
内容的提问来源于stack exchange,提问作者OsakaWebbie
相关产品推荐
相关产品推荐

