如何恢复feature分支误删并提交的main分支代码?
解决Git分支合并失误导致代码丢失的问题
先恢复feature分支中被误删的代码
你之前执行git pull origin main无效,是因为Git会将feature分支的删除操作视为有效提交,不会自动回滚。可以通过以下两种方式恢复:
方式1:通过差异对比手动恢复
- 切换到feature分支:
git checkout feature - 对比main和feature分支的代码差异,定位被删除的内容:
执行后会显示类似如下的删除标记(以你的示例为例):git diff main feature-f2(); - 手动将被删除的
f2();代码添加回文件,然后提交变更:git add . git commit -m "恢复误删的f2()代码"
方式2:通过提交历史回滚到未删除代码的版本
- 查看feature分支的提交历史,找到还保留
f2();的那个提交ID(一串哈希值):git log --oneline - 重置feature分支到该提交(注意:如果该提交之后还有其他有效变更,此操作会丢弃后续提交,需谨慎):
若后续还有需要保留的提交,可改用git reset --hard <目标提交ID>git revert撤销删除操作的提交:
此命令会生成一个新提交,将被删除的代码恢复,同时保留后续的有效变更。git revert <删除代码的提交ID>
确保合并到main分支时不会删除代码
恢复feature分支的代码后,就可以正常向main分支发起Pull Request并合并了。此时feature分支的代码与main分支一致(或包含你的新增变更),合并操作不会删除main分支的现有代码。
内容的提问来源于stack exchange,提问作者Surendranatha Reddy T
相关产品推荐
相关产品推荐

