了解 Git 冲突原因
Understanding Git conflict cause
我们使用 3 个 "main" 个分支,dev
、uat
和 master
。然后我们对任何新工作使用 "feature" 分支,从 master
分支,然后合并回 dev
,PR 到 uat
,master
.
在 uat
的 PR 期间,特别是一位开发人员,发现生成的 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;
}
我不明白为什么简单地删除几行或只是 >
会导致冲突。
最初,我们想查看行尾等,但这是 生成的 …
我们将如何调查原因?有谁知道为什么会这样?
我猜你有理由将生成的CSS添加到git,所以我会在这里忽略这个问题。
I don't understand why a simple removal, of a couple of lines, or just a > would cause a conflict.
但这正是冲突所在。 Git 不关心变化的严重程度。您可以指示它忽略某些空白更改,但不要将多个换行符视为一个换行符。
两个提交 A 和 B 的 3 向合并是这样工作的:
- 寻找共同祖先C.
- 找出 C 和 A 之间的差异。
- 找出 C 和 B 之间的差异。
- 比较两组差异,不是逐行而是逐块比较。根据定义,重叠行不相等(可能在空白归一化之后)的任何重叠块都是冲突的。
我想您必须解决的真正问题是,如果其他一切都相同,为什么这个开发人员生成的 CSS 与另一个开发人员不同。也许他使用不同的(版本的)工具来生成那个 CSS,并且(的)工具的(版本信息)在存储库之外?
我们使用 3 个 "main" 个分支,dev
、uat
和 master
。然后我们对任何新工作使用 "feature" 分支,从 master
分支,然后合并回 dev
,PR 到 uat
,master
.
在 uat
的 PR 期间,特别是一位开发人员,发现生成的 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;
}
我不明白为什么简单地删除几行或只是 >
会导致冲突。
最初,我们想查看行尾等,但这是 生成的 …
我们将如何调查原因?有谁知道为什么会这样?
我猜你有理由将生成的CSS添加到git,所以我会在这里忽略这个问题。
I don't understand why a simple removal, of a couple of lines, or just a > would cause a conflict.
但这正是冲突所在。 Git 不关心变化的严重程度。您可以指示它忽略某些空白更改,但不要将多个换行符视为一个换行符。
两个提交 A 和 B 的 3 向合并是这样工作的:
- 寻找共同祖先C.
- 找出 C 和 A 之间的差异。
- 找出 C 和 B 之间的差异。
- 比较两组差异,不是逐行而是逐块比较。根据定义,重叠行不相等(可能在空白归一化之后)的任何重叠块都是冲突的。
我想您必须解决的真正问题是,如果其他一切都相同,为什么这个开发人员生成的 CSS 与另一个开发人员不同。也许他使用不同的(版本的)工具来生成那个 CSS,并且(的)工具的(版本信息)在存储库之外?