欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

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

2025年04月02日 其他编程
git revert后再次merge代码丢失问题问题场景公司使用gitlab作为代码管理工具,开发人员新功能开发结束时(开发分支:feature-member),合并代码需要提交mr(pr)给相关负责

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了。

总结

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。