GitLab revert 导致新提交 merge 代码丢失(diff丢失)

Posted liuhmmjj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitLab revert 导致新提交 merge 代码丢失(diff丢失)相关的知识,希望对你有一定的参考价值。

比如你当前用的分支是feature_xxx,你将feature_xxx分支merge到master之后,原分支feature_xxx就会自动被删除,这时发现刚代码有bug,需要回版本回退,点击revert按钮:

 你将本地的原分支feature_xxx代码修改后提交到远程分支,发起 Merge 到 Master 的申请会发现,feature_xxx分支和 master 分支的差异 commit 只有 feature_xxx 分支 revert 后的提交记录(之前的代码变动都没有了)

问题原因:

是因为对于master而言,已经合并过feature_xxx,master包含feature_xxx的commitid,这些提交不会参与diff,所以不会显示出两个分支的不同。

解决方案:

将revert之后产生的分支,再次进行revert。这个操作能够将本要提交的代码,放置到最新的HEAD,其commitid要比master高,所以会重新diff。

具体操作如下:

#1.从master拉出一条分支
git checkout -b revert_tmp
#2.在revert_tmp将revert的commitid再次执行revert
git revert b846b23f1f7ec4c503f54885029a12169c6db190(revert的commitid)
#3.切换到开发分支
git checkout feature_xxx
#4.开发分支合并revert_tmp
git merge revert_tmp
#5.推送远端
git push origin feature_xxx

或者简化:

切换到master分支,

对revert的那次提交记录再次revert

然后将代码提交到你原分支的远程分支feature_xxx

以上是关于GitLab revert 导致新提交 merge 代码丢失(diff丢失)的主要内容,如果未能解决你的问题,请参考以下文章

GitLab revert 导致新提交 merge 代码丢失(diff丢失)

如何撤消合并请求及其提交?

git revert与git reset

git revert 某一个文件

git revert和git reset的区别

git 代码提交merge request