Чтобы добавить немного к ответу Джоаниса , независимо от того, как вы собираетесь объединить свой новый xyz.js
с чужим также новым xyz.js
, вы нажмете "добавить / добавить конфликт ". Помните, что механизм слияния Git, независимо от того, как вы его вызываете - и git stash apply
и git stash pop
вызывают его, поэтому, используете ли вы git merge
(это мое собственное предпочтение) или git stash
для достижения слияния - требуется три входа: базовая версия, левая или «локальная» или --ours
версия и правая или удаленная или --theirs
версия.
Git сравнивает базовую версию файла с вашей версией файла, чтобы увидеть что вы изменили . Отдельно он сравнивает (одну и ту же) базовую версию файла с их версией файла, чтобы увидеть что они изменили .
В данном конкретном случае базовая версия xyz.js
: Файл не существует. Левая версия - это ваш файл, а правая - их. (Если поменять местами левую и правую стороны, ничего не изменится, кроме метки: --ours
теперь означает их файл, а --theirs
теперь означает ваш файл. Поскольку слияние в значительной степени симметрично У вас одни и те же конфликты и результаты. Вот почему, по крайней мере, для таких случаев, я просто люблю называть их левой и правой сторонами.) Так что base , из которого произошли ваши изменения, была пустотой. Основой, из которой произошли их изменения, была пустота. Git всегда использует один общий файл в качестве базы, поэтому общий файл - это пустота, а это означает, что для Git это конфликт «добавления / добавления» со всеми вашими строками (создание файла из ничего) конфликтует со всеми их строками (создавая другую версию этого файла из ничего): Git не знает, брать ли ваши строки, или их строки, или некоторую комбинацию этих двух.
Вам, как человеку, выполняющему слияние, решать, что делать. Но одна из приятных вещей, связанных с размещением ваших вещей в собственной ветке, заключается в том, что вы можете отменить слияние и затем начать с после создания нового коммита. Если ваш xyz.js
полностью отличается от их xyz.js
, перед объединением вы можете переименовать ваш xyz.js
, например, iter-xyz.js
. Внесите любые другие необходимые изменения, зафиксируйте результат, и теперь вы готовы к слиянию - и все это время нет конфликта добавления / добавления, так как добавляется ваш iter-xyz.js
и их xyz.js
добавлено, и в результате у вас есть оба файла в вашем рабочем дереве и в вашем коммите слияния.