遵循基于主干的开发,如下图所示:
假设有两个从(主干)创建的短期特征分支(f1
和)。为了实现,在这种情况下,用于这些分支的源代码文件重叠。f2
master
假设,有一个用于master
(主干)的 CI/CD 管道在代码更改时被触发。
一种可能的代码冲突是功能性的,f1
可以删除或修改f2
使用....的现有源代码。这不是 VCS 冲突。
Developer1 已git commit
在f1
(在笔记本电脑中)执行过t
,但尚未执行push
Developer2 已git commit
在f2
(在笔记本电脑中)上执行过t+24
,但尚未执行push
据我了解,以下是笔记本电脑提交历史文件中推送前的场景:
给定上述场景,f1
可以与 合并master
,这是一个简单的快进合并。所以,master
并且f1
会指向156b4bf
提交快照,在这次合并之后,如下图:
但是当f2
24 小时后发生提交时,Git 将使用 3 个快照(和)执行3 路合并156b4bf
,如下所示:96f5b29
c435356
如果合并成功 ,CI/CD 管道将再次触发。我的理解是,由于功能冲突,Git 应该阻止 3 路合并。
1)使用Git,快进/三向合并是否检测到功能冲突?
2) 如果是, ApartCI 是否解决了其他任何非 VCS 冲突场景?Git 不能……如果是,怎么办?
注意:没有计划使用Gitflow 工作流