You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git重置(reset)后如何重新提交已有提交并恢复指定提交E

恢复提交E并创建Pull Request的方案

首先,先确认提交E的哈希值:

  • 运行 git log --oneline,找到提交E对应的短哈希(比如 eabc123),记下来。

接下来,创建一个专门的分支来处理恢复E的操作,避免影响主分支:

git checkout -b restore-E-from-history

然后,我们需要把提交E的变更提取并应用到当前分支(当前分支的状态是H,也就是回到C的状态):

  • 如果你想直接应用E的变更并自动处理(可能会有冲突),可以用cherry-pick:

    git cherry-pick eabc123
    

    如果出现冲突,Git会提示你哪些文件有冲突,手动修改这些文件解决冲突后,运行:

    git add <冲突文件>
    git cherry-pick --continue
    

    要是中途想放弃,就用 git cherry-pick --abort。

  • 如果你想先查看E的变更内容,再手动应用,可以先导出补丁:

    git show eabc123 > e-commit.patch
    

    然后查看补丁内容确认是你要的变更,再应用补丁:

    git apply e-commit.patch
    

    同样,有冲突的话需要手动解决,之后提交变更:

    git add .
    git commit -m "Restore changes from commit E (eabc123)"
    

最后,把这个新分支推送到远程仓库,就可以基于它创建Pull Request了:

git push origin restore-E-from-history

补充说明

因为你的提交H是一次性撤销了D到G的所有变更,所以直接恢复E的时候,可能会因为E依赖D的变更而出现冲突——毕竟E是基于D的代码修改的。这时候你需要仔细检查冲突部分,确认是保留D的变更(为了让E能正常工作)还是调整E的变更适配当前C的状态,根据你的实际需求来处理就好。

内容的提问来源于stack exchange,提问作者user1678324

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:16:11