git игнорировать окончания строк

Я знаю, что задавались аналогичные вопросы, но я все еще не могу заставить его работать.

Мой проект распространяется среди людей, использующих разные операционные системы, и я работаю на OSX. Кроме того, не все еще используют git, и иногда мне приходится фиксировать изменения, внесенные другими.

Иногда из ниоткуда git сообщает, что есть незавершенные изменения. Глядя на файлы, они выглядят одинаково:

@@ -1,6 +1,6 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
->
-    <Deployment.Parts>
-    </Deployment.Parts>
-</Deployment>
+<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+>
+    <Deployment.Parts>
+    </Deployment.Parts>
+</Deployment>

Я подозреваю, что это проблема с окончанием строки.

[править] Один внешний инструмент сравнения конкретно говорит: «Статус: 1 разница Концы строк различаются - слева: Windows (CRLF), справа: Unix (LF)»

Следуя некоторым онлайн-советам, моя конфигурация выглядит так:

[core]
    excludesfile = /Users/nathanh/.gitignore_global
    autocrlf = input
    attributesfile = /Users/nathanh/.config/git/attributes
    whitespace = cr-at-eol

И мой файл атрибутов:

# Ignore all differences in line endings
*        -crlf

Почему мне все еще показывается, что файлы изменены?


person Nathan H    schedule 27.07.2015    source источник
comment
Если у вас core.filemode не задано или установлено значение true, отличается ли вывод? Вы также можете попробовать отключить core.whitespace = fix, -indent-with-non-tab, trailing-space, cr-at-eol;   -  person Hexana    schedule 27.07.2015
comment
Один из вопросов: что мне нужно сделать, чтобы эти изменения вступили в силу?   -  person Nathan H    schedule 27.07.2015
comment
Чтобы отключить режим файла: попробуйте git config core.fileMode false   -  person Hexana    schedule 27.07.2015


Ответы (1)


Прочтите это на сайте JetBrains.com

Чтобы Git решал такие проблемы автоматически, вам необходимо установить для атрибута core.autocrlf значение true в Windows и для ввода в Linux и OS X. Подробнее о значении атрибута core.autocrlf см. В статье Помните о конце вашей строки или как работать с окончаниями строк. Вы можете изменить конфигурацию вручную, запустив

git config --global core.autocrlf true 

в Windows или

git config --global core.autocrlf input 

в Linux и OS X. Однако IntelliJ IDEA может проанализировать вашу конфигурацию, предупредить вас, если вы собираетесь зафиксировать CRLF в репозитории, и предложить установить для параметра core.autocrlf значение true или ввод в зависимости от используемой операционной системы.

Надеюсь, это поможет пролить свет на проблему.

person Hexana    schedule 27.07.2015
comment
Извините, случайно опубликовал этот ответ дважды :( - person Hexana; 27.07.2015
comment
Таким образом, это будет предполагать, что другим нужно сделать это на своих компьютерах. Одна из проблем заключается в том, что иногда я получаю файлы Windows другими способами, а затем фиксирую их со своего Mac. - person Nathan H; 29.07.2015
comment
Это тоже должно успокоиться git diff? Это не для меня, но я новичок в git, поэтому, возможно, я сделал это неправильно. - person hippietrail; 23.10.2017
comment
также, если конфигурация не должна добавляться глобально, просто запустите git config core.autocrlf true resp. git config --global core.autocrlf input - person Allan Karlson; 11.05.2020