gitlab反向合并导致原分支被污染

项目场景:
开发项目的时候,使用gitLab合并功能分支feature到dev上的时候,出现了Conflicts,在线解决冲突之后,点击解决合并,结果反向的把dev的分支合并到了feature功能分支,这波蜜汁操作当时我就懵了!!!

问题描述
gitLab合并解决冲突之后,反向将目标分支合并到了源分支。


原因分析:
首先了解一下gitlab官方提供的解决冲突的几个模式:

Resolve conflicts in interactive mode To resolve less-complex conflicts from the GitLab user interface:
1.Go to your merge request.
2.Select Overview, and scroll to the merge request reports section.
3. Find the merge conflicts message, and select Resolve conflicts. GitLab shows a list of files with merge conflicts.

简单翻译一下就是:
1. 转到你的合并请求。
2. 选择Overview,然后滚动到合并请求报告部分。
3. 找到合并冲突消息,然后选择解决冲突。GitLab 显示具有合并冲突的文件列表。冲突突出显示:

看到这好像觉得也没发现啥问题,接着继续往下看:
注意以下这句关键:

Resolving conflicts merges the target branch of the merge request into the source branch, using the version of the text you chose. If the source branch is feature and the target branch is main, these actions are similar to running git checkout feature; git merge main locally

翻译一下这句就会发现问题了:
解决冲突会使用您选择的文本版本将合并请求的目标分支****合并到源分支中。
还举了个例子:
如果源分支是 feature,目标分支是main,这些动作类似于在 git checkout feature; git merge main本地运行。
这下就终于理解了,当我的分支是feature/xxxx的时候,解决完冲突,将我的目标分支dev合并到了我的源功能分支上面去了,oh shit 这该死的操作!!!!!

解决方案:
方法1:临时分支替代法:分支feature要合并到dev分支,且出现了冲突,可以先从feature分支拉一个临时分支feature_temp,用临时分支feature_temp合并到dev分支。
git checkout feature //先切换到feature 分支
git checkout -b feature_temp //拉出来新的分支
git push origin feature_temp //推送到远端
git branch --set-upstream-to=origin/feature_temp 

然后再gitlab界面上面选择feature_temp分支去做合并操作。

方法2:回滚补救法:设feature分支要合并到dev分支,且出现了冲突,合并完成后,对feature分支做回滚操作。
git log //找到上一个版本的commitID
git reset --hard HEAD/commitID  //强制回退本地分支到上一个版本
git push origin HEAD --force 或者 git push -f origin feature //强制回退远程

这样就轻松解决了gitlab解决冲突后的反向操作,还是要多看看官方文档,贴一下地址gitLab官方文档,希望大家多多支持和关注。
————————————————

git回滚版本:

git reset --mixed 目标版本号,回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响)

git reset --soft 目标版本号,回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)

git reset --hard 目标版本号,回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换

回滚后再强推到远程git服务器:git push -f origin test 强制推送到远程分支,-f 强制,origin 远程仓库名,test 远程分支名

git revert 目标版本号

这个命令在本地反向做一个版本抵消目标版本,然后正常commit提交,push到远程分支

                        
原文链接:https://blog.csdn.net/u013487071/article/details/123485341

原文链接:https://blog.csdn.net/wteruiycbqqvwt/article/details/116656428

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值