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
相关产品推荐
相关产品推荐

