У меня возникла проблема, когда конфликты слияния приводили к тому, что весь файл был конфликтом. Это закончилось тем, что новые строки в локальном файле стали моделями нового стиля (LF) во время слияния (перед тем как объединить как ветку разработки, так и функции, были отмечены строки CRLF при извлечении).Git совершает неправильные символы новой строки при использовании .gitattributes
Если я побежал
git rm --cached -r .
git add -A
никаких изменений не будет отображаться со статусом мерзавца. Но когда я удалил файл .gitattributes
и сделал еще один файл all/add, все это привело к обновлению некоторых файлов различными новыми строками. Например, для 100-строчного файла было бы сказано, что 100 строк удалены, добавлено 100 строк. Сделав это для обеих ветвей, слияния были прекрасными.
.gitconfig autocrlf = true
был установлен, и файл .gitattributes имел только эти строки. Я думаю, что приведенные ниже строки повлияют только на слияние стратегий.
*.csproj -text merge=union
*.sln -text merge=union
Почему бы это .gitattributes изменить как новые линии совершаются?
Также с autocrlf установлено значение true Я не уверен, почему слияние будет сравнивать LF против CRLF, если, возможно, что-то в .gitattributes не перекрывает его.
От https://help.github.com/articles/dealing-with-line-endings
При желании можно настроить так, как Git управляет окончаниями строк на на репозитарий основе путем настройки специального .gitattributes файла. Этот файл привязан к репозиторию и переопределяет настройку ядра core.autocrlf , гарантируя постоянное поведение для всех пользователей, независимо от их настроек Git. Преимущество файла в .gitattributes, что ваши конфигурации линии связаны с репозиторием
Это ясно показывает, что .gitattributes способен перекрывая autocrlf, но нет в нем никаких настроек, которые говорят это сделать любая конверсия eol. Может быть, есть некоторая по умолчанию, которая неявно используется.