Конфликт не означает, что две строки кода не совпадают.Конфликт означает, что два изменения несовместимы.
Предположим, что в origin/master
есть следующий код:
var testValue = "A";
I pull
вниз самая последняя копия в моем локальном master
, и оба показывают эту строку.
Если сотрудник вносит следующее изменение и push
присваивает ему значение origin/master
:
var testValue = "B";
Теперь моя локальная копия отличается, имы находимся в той же ситуации, что вы описали.
Если я pull
последний код, он просто обновится автоматически без какого-либо конфликта.Почему?
Git пытается применить изменение var testValue = "A";
-> var testValue = "B";
.С текущим состоянием моего локального филиала это изменение все еще имеет смысл, поэтому оно применяется.
Предположим, я внесу это изменение до pull
последнего кода:
var testValue = "C";
Теперь, когда я pull
последний код, Git пытается применить изменение var testValue = "A";
-> var testValue = "B";
- но это больше не имеет смысла, так как мой локальный код не var testValue = "A";
= CONFLICT
Это намного больше, но я думаю, что это можно выразить следующим образом:
Git пытается применить изменение из определенного начального состояния в конкретное конечное состояние - там будетконфликт, если текущее состояние не соответствует указанному начальному состоянию, в противном случае изменение будет применено