Возможно ли для git-merge игнорировать различия в конце строки? - PullRequest
140 голосов
/ 14 мая 2009

Возможно ли для git merge игнорировать различия в конце строки?

Может быть, я задаю не тот вопрос ... но:

Я попытался использовать config.crlf input, но все стало немного грязно и вышло из-под контроля, особенно когда я применил его после факта .

Во-первых, применение этой конфигурации после факта, похоже, не влияет на файлы, которые были зафиксированы в хранилище до применения этой опции. Другое дело, что внезапно все коммиты теперь приводят к множеству надоедливых предупреждений о преобразовании CRLF в LF.

Если честно, мне все равно, какой конец строки используется, я лично предпочитаю стиль Unix \n, но неважно. Все, что меня волнует, это чтобы git merge был немного умнее и игнорировал различия в конце строки.

Иногда у меня есть два идентичных файла, но git помечает их как конфликтующие (и конфликт представляет собой весь файл) просто потому, что они используют другой символ окончания строки.

Обновление:

Я узнал, что git diff принимает опцию --ignore-space-at-eol, можно ли разрешить git merge использовать эту опцию?

Ответы [ 12 ]

0 голосов
/ 23 августа 2010

AFAICT, (я не пробовал) вы можете использовать git diff, чтобы сравнить ветку, которую вы хотите объединить с общим предком, а затем применить результаты с git apply. Обе команды имеют опции --ignore-whitespace для игнорирования ошибок конца строки и пробелов.

К сожалению, если патч не применяется корректно, вся операция прерывается. Вы не можете исправить конфликты слияния. Существует опция --reject, позволяющая оставлять непатентованные фрагменты в файлах .rej, что помогает, но не то же самое, что конфликты слияния, показанные в одном файле.

0 голосов
/ 16 мая 2009

Мне кажется, что лучший способ - нормализовать окончания строк в обеих ветвях (и зафиксировать) перед их объединением.

Я гуглил "преобразовать crlf в lf" и нашел это как первые результаты:
http://stahlforce.com/dev/index.php?tool=remcrlf

Я скачал и использовал, похоже, хороший инструмент.

>sfk remcr . .py

Обязательно укажите каталог и тип файла (например, .py), иначе он может попытаться возиться с содержимым каталога .git!

...