В этом случае у вас есть различия между пробелами. Git считает различия между пробелами значительными. (Если бы это было не так, хорошо ... представьте себе программу, написанную, например, на Пробел .)
Ваш комментарий:
.. с последующим git merge -s recursive -Xignore-space-change origin/master
. Это сработало, и на этот раз у меня не было конфликтов.
подтверждает, что конфликты были просто с пробелами. Аргумент -X
- я называю эти расширенные аргументы , где X
обозначает eXtended ) - ignore-space-change
сообщает Git, что во время слияния, если ваше изменение и их изменениеодинаковы, за исключением пробелов, это на самом деле не конфликт.
Точные правила для этих четырех расширенных опций описаны в документации :
ignore-space-change
ignore-all-space
ignore-space-at-eol
ignore-cr-at-eol
Обрабатывает строки с указанным типом изменения пробела как неизменные для трехстороннего слияния. Изменения пробелов, смешанные с другими изменениями строки, не игнорируются. См. Также git-diff [1] -b
, -w
, --ignore-space-at-eol
и --ignore-cr-at-eol
.
Если их версия только вводит пробельные изменения в строку, наша версия используется;
Если наша версия вносит изменения пробельных символов, но их версия включает в себясущественное изменение, используется их версия;
В противном случае слияние происходит обычным образом.
Обратите внимание, что вы обычно можете записать эту команду более просто:
git merge -X ignore-space-change
-s recursive
является значением по умолчанию, и origin/master
, вероятно, уже установлено в качестве восходящего потока вашей текущей ветви master
, так чтоэто тоже значение по умолчанию.
(Пробел между -X
и его аргументом необязателен, но я предпочитаю его использовать.)