1、feature --> test
目的:功能分支开发完之后,将功能分支合并到test分支进行测试
2、问题详细描述
在gitlab上面做合并操作,出现冲突,解决冲突后提交,确认合并,发现两个分支互相合并了。
总结:如果使用 Gitlab 提供在在线冲突解决工具的话,本来是将 A --> B 合并的,结果变成了先走 B --> A 合并,再走A --> B,导致分支管理混乱。(有冲突的情况才会有这种现象)
3、分析与解决
git正常的合并分支操作
- 切换到目标分支
- 执行合并命令,git merge源分支
- 没有冲突合并结束,出现冲突,在目标分支上解决冲突,执行commit命令,合并结束
gitlab做合并分支的操作
-
新建合并请求,选择源分支和目标分支
-
出现冲突时,可以使用Gitlab提供的在线冲突解决工具/或者取消合并请求,用本地命令合并
-
使用在线工具的话,Gitlab实在源分支上提交我们解决冲突的代码,最后点合并的时候再把源分支合并到目标分支,这就导致合并结束后,源分支与目标分支出现互相合并的情况,就产生很多分支合并管理上的问题
Note: 注意: GitLab resolves conflicts by creating a merge commit in the source branch that is not automatically merged into the target branch. This allows the merge commit to be reviewed and tested before the changes are merged, preventing unintended changes entering the target branch without review or breaking the build.
Gitlab 通过在源分支中创建一个 merge commit 来解决冲突,该分支不会自动合并到目标分支中。 这允许在合并更改之前对合并提交进行审查和测试,从而防止意外的更改进入目标分支,而无需审查或中断构建
4、解决方法
- 假设A分支要合并到B分支,且出现了冲突,可以先从A分之拉一个临时分支A_bak分支合并到B分支
- 假设A分之要合并到B分支,且出现了冲突,合并完成之后,对A分之做回滚操作git reset/ git revert 目标版本号