Git交互式rebase过程中不完成变基如何回退到已处理的提交?
Git交互式变基过程中修改历史提交的方案
完全可以在不结束当前变基的前提下修改已处理的提交,操作步骤如下:
前置准备
如果当前工作区/暂存区有未提交的修改,先执行暂存避免内容丢失:
git stash
给当前已经完成拆分的提交打临时标签,方便后续找回:
git tag temp_done
具体操作
- 回退到目标提交
根据你要修改的提交,执行对应命令跳转到对应提交:
- 修改
5e2df3f a提交:git reset --hard 5e2df3f - 修改
5446996 b'提交:git reset --hard 5446996
- 修改提交
完成对目标提交的内容、提交信息调整,或拆分提交等操作,确认修改符合预期。 - 移植已处理提交
将之前拆分好的提交移植到修改后的提交链上:
# 若修改的是a提交,执行: git cherry-pick 5446996 a5f42cc # 若修改的是b'提交,仅需移植后面的b''提交: git cherry-pick a5f42cc
若cherry-pick过程中出现冲突,解决冲突后执行
git add <冲突文件>,再运行git cherry-pick --continue即可。
- 继续原有变基流程
提交移植完成后,执行以下命令继续处理待办列表中剩余的c提交:
git rebase --continue
- 清理临时资源(可选)
整个变基流程完成后,删除之前创建的临时标签:
git tag -d temp_done
注意事项
如果需要修改的提交哈希在变基过程中已经被改写,可以通过git log --oneline查看正确的哈希值再操作,原有变基的待办列表不会丢失,执行继续命令后会自动执行剩余操作。
内容的提问来源于stack exchange,提问作者milianw
相关产品推荐
相关产品推荐

