记录一次git合并
背景
我今天在向其他分支合并代码时,出现冲突,然后我就在gitLab网页上解决冲突。等我下午回头整理自己分支的时候,发现自己分支有其他分支的代码。这也是GitLab在merge
代码时的一个操作:反向合并
模拟重现
- A:自己提测分支,于明天要合并到master分支;
- B:其他提测分支,于后天要合并到master分支;
由于测试环境正在测试B分支的功能,所以测试环境只能发B分支;现在我想验证A分支上临时添加的小功能,所以我就要把A分支合并B分支上,但出现冲突了,我在GitLab上直接解决冲突了。
GitLab
的解决冲突的机制:会先将B合并到A分支,此时A分支把冲突解决了,再将把解决冲突后的A分支合并到B分支。
这个时候就出现问题了:
明天要上线的A分支,含有后天才上线B分支的代码!!!
解决办法:
首先,明确一个规则:A分支一定不能含有B分支的代码。
而在测试分支互相合并出现冲突后,不能直接解决冲突。因为,一但解决冲突,俩个测试分支都互相含有对方分支的代码;只要俩个分支上线时间不一致,就会违反上面的规则。
如何解决?
新建一个临时分支C,测试环境使用C分支来测试。以最先上线的分支A来创建分支C,然后B分支向C提代码,这样只有B分支有A分支代码,而A分支是干净的。
git冲突的原因
https://blog.csdn.net/themagickeyjianan/article/details/81540662