0

我们使用 3 个“主要”分支,devuatmaster。然后,我们对任何新工作使用“功能”分支,从 分支master,然后合并回dev,PR 到uatmaster

在 PR to 期间uat,特别是一位开发人员,在生成的 CSS 上看到几乎不断的合并冲突(我们使用的是 SASS 和 gulp)。

虽然这听起来出乎意料,但差异非常令人惊讶:

+<<<<<<< destination:ac815dd…
.strip--beta .card-feed {
  background: transparent;
}
+=======
+>>>>>>> source:b49e50b72ee…

或者:

@media (min-width: 1024px) {
+<<<<<<< destination:ac815ddf3…
   .copy h1 {
Add a comment to this line
+=======
+  .copy > h1 {
+>>>>>>> source:b49e50b72…
     font-size: 34px;
     line-height: 48px;
   }

我不明白为什么简单的删除,几行,或者只是 a>会导致冲突。

最初,我们想查看行尾等,但这是生成的……</p>

我们将如何调查原因?有谁知道为什么会发生这种情况?

4

1 回答 1

3

我猜你有理由将生成的 CSS 添加到 git 中,所以我将在这里忽略这个问题。

我不明白为什么一个简单的删除,几行,或者只是一个 > 会导致冲突。

但这正是冲突的本质。Git 不在乎变化的严重程度。您可以指示它忽略某些空白更改,但不要将多个换行符视为一个。

两个提交 A 和 B 的 3 路合并的工作方式如下:

  • 寻找共同祖先 C.
  • 找出 C 和 A 之间的差异。
  • 找出 C 和 B 之间的差异。
  • 比较两组差异,不是逐行而是逐块比较。根据定义,任何重叠线不相等的重叠块(可能在空白规范化之后)都是冲突的。

我想你必须解决的真正问题是,如果其他一切都相同,为什么生成的 CSS 对这个开发人员来说与另一个不同。也许他使用不同的(版本的)工具来生成该 CSS,而这些工具的(版本信息)在存储库之外?

于 2016-10-24T11:59:48.507 回答