执行Git revert后,如何提交本地保留的回退代码及新增变更?
解决步骤
先明确当前状态:远程主线已经有一个revert提交抵消了你之前push的代码,而本地还保留着被revert的原代码+后续新增修改,且未同步远程。以下是安全保留所有变更的操作流程:
方法一:用临时分支备份(更直观安全)
- 创建临时分支并提交所有本地修改,确保变更不会丢失:
git checkout -b temp-save git add . git commit -m "临时备份:原提交代码+新增修改" - 切回主线分支,拉取远程最新代码(包含那个revert提交):
git checkout <你的主线分支名,比如main> git pull origin <主线分支名> - 恢复之前被revert的原提交:先找到远程那个revert提交的ID(可以用
git log查看),执行反向revert来恢复原代码:
这一步会生成一个新提交,把你之前被回退的代码重新恢复到主线。git revert <revert提交的ID> - 合并临时分支的新增修改到主线:
如果出现冲突,手动解决冲突后执行git merge temp-savegit add .,然后提交合并结果:git commit -m "合并新增修改" - 最后推送到远程:
git push origin <主线分支名>
方法二:用stash暂存修改(更简洁)
- 暂存当前所有本地修改,避免拉取时丢失:
git stash push -m "暂存原代码+新增修改" - 拉取远程主线最新代码:
git pull origin <主线分支名> - 恢复原提交:找到远程revert提交的ID,执行反向revert:
git revert <revert提交的ID> - 恢复暂存的修改:
若有冲突,手动解决后执行git stash popgit add .,然后提交新增修改:git commit -m "提交新增修改" - 推送到远程:
git push origin <主线分支名>
注意事项
- 执行
git log时,revert提交的日志通常会带有Revert "xxx"的字样,很容易识别。 - 解决冲突时,仔细对比代码,确保保留原提交内容和新增修改的正确部分。
内容的提问来源于stack exchange,提问作者jdiablo
相关产品推荐
相关产品推荐

