如何解决git revert后再次merge代码丢失问题

 更新时间:2025年04月02日 09:05:59   作者:coding4all  
这篇文章主要介绍了如何解决git revert后再次merge代码丢失问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

git revert后再次merge代码丢失问题

问题场景

公司使用gitlab作为代码管理工具,开发人员新功能开发结束时(开发分支:feature-member),合并代码需要提交mr(pr)给相关负责人,由负责人将代码合并到master。

此时产品说暂时不上线此版本,和下一个版本一起发布,为了保证master分支代码的准确性,我们使用git revert将本次mr撤销。

然后等下个版本开发完成后,提交了mr,发现变动的文件只有revert之后的变动,第一次mr的文件改动都没有了(git revert后再次merge,git默认会丢弃这段代码)。

解决方案

# 切换到master分支
git checkout master
git pull
# 基于master拉出一个分支 revert_tmp
git checkout -b revert_tmp

# 将之前git revert那次commit再次revert(commit号从git log可以查到)
git revert acd414e1cd42315ce93a9730db961155be140013
git checkout feature-member
git merge revert_tmp
git commit -m "revert"
git push

经过以上操作后,再次提pr,这样第一次revert之前的代码就可以看到了。

git revert 某次 merge 之后再重新 merge 代码被冲掉

问题

在 develop 分支发现 merge 某个 feature 分支时的代码有问题(如果是 feature 分支的代码有问题,只要修改该 feature 分支的代码,再 merge 到 develop 就好了。

如果是 merge 的时候冲突没有解决好则需要 revert 该次 merge),于是用 ’git revert < commit id > -m 1 ‘ 命令 revert 了该次 merge , 但是 revert 之后想把这个 feature 分支再重新merge到develop 分支时,发现 merge 不了。

解决方法

在 revert feature 的 merge 之后,checkout 到 feature 分支,

使用 git reset head^ 撤销上次提交(如果merge前有多个提交就撤消所有提交)

然后修改有问题的代码,代码没问题的话不修改也行

修改完后 ,将代码提交并强推到远程分支

git add .
git commit -m “”
git push -f

再 checkout develop 切换到 develop 分支

用 git merge 再merge 一次该feature分支,就会发现代码都 merge上去了

最后 push 到远程就ok了。

总结

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决git误commit大文件导致不能push问题

    解决git误commit大文件导致不能push问题

    这篇文章主要介绍了解决git误commit大文件导致不能push问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • git push 本地项目推送到远程分支的方法(git命令版)

    git push 本地项目推送到远程分支的方法(git命令版)

    这篇文章主要介绍了git push 本地项目推送到远程分支的方法(git命令版),需要的朋友可以参考下
    2020-09-09
  • Git提交历史查看与日志筛选的全攻略

    Git提交历史查看与日志筛选的全攻略

    本文介绍了Git日志(gitlog)的实用操作指南,主要内容包括:基础用法展示提交历史、显示补丁(-p)与修改统计(--stat)、多样化输出格式(--pretty)设置、图形化分支(--graph)展示,以及多种过滤方式(时间、作者、关键词、路径等),需要的朋友可以参考下
    2026-03-03
  • 网站被等恶意镜像的解决、反制措施详细教程

    网站被等恶意镜像的解决、反制措施详细教程

    这篇文章主要介绍了网站被等恶意镜像的解决、反制措施详细教程,需要的朋友可以参考下
    2016-10-10
  • 使用postman进行接口自动化测试

    使用postman进行接口自动化测试

    这篇文章介绍了使用postman进行接口自动化测试的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • git如何拉取指定分支代码

    git如何拉取指定分支代码

    本文介绍了三种使用Git操作代码仓库的方法:首先是克隆整个仓库后切换至指定分支,其次是在克隆时直接指定分支,最后是在本地空仓库中拉取指定分支的代码,每种方法适用于不同的场景,帮助用户灵活高效地管理代码
    2024-10-10
  • Git回退到指定版本三种方法及常见的错误

    Git回退到指定版本三种方法及常见的错误

    在Git中回退到指定版本并不是删除或撤销之前的提交,而是创建一个新的提交,该提交包含指定版本的内容,这篇文章主要给大家介绍了关于Git回退到指定版本三种方法及常见的错误,需要的朋友可以参考下
    2024-03-03
  • cypress测试工具特点及使用介绍

    cypress测试工具特点及使用介绍

    这篇文章主要为大家介绍了cypress测试工具以及为什么要使用cypress的原因,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 虚拟主机下实现多域名绑定不同的子目录的方法

    虚拟主机下实现多域名绑定不同的子目录的方法

    虚拟主机域名绑定子目录asp php html (通用)
    2010-03-03
  • Git Stash丢失后的完整找回指南

    Git Stash丢失后的完整找回指南

    文章详细描述了当本地分支有未提交的git stash,合并远程分支后 stash 从列表消失的事故处理方法,总结了根本原因、找回步骤、关键原理、概念说明、预防措施,并给出总结一句话,简要介绍了如何处理丢失的 stash,需要的朋友可以参考下
    2026-04-04

最新评论