Git хочет изменить LF на CRLF на окнах - как это исправить? - PullRequest
0 голосов
/ 05 апреля 2019

В этом ответе я нашел следующую таблицу:

Как autocrlf работает :

core.autocrlf=true:      core.autocrlf=input:     core.autocrlf=false:

        repo                     repo                     repo
      ^      V                 ^      V                 ^      V
     /        \               /        \               /        \
crlf->lf    lf->crl      crlf->lf       \             /          \      
   /            \           /            \           /            \

Я делаю большую часть разработки и модульного тестирования локально на Windows Box, но основной репозиторий git находится на Unix-машине, а код используется на нескольких Unix-машинах.

Мне все равнокак концы строк появляются в моих окнах, но я очень хочу, чтобы не имел какой-либо CRLF в хранилище.

Я использую PyCharm, если это что-то меняет.

Вот мои настройки git:

# ~/.gitconfig :
[user]
    name = ***
    email = ***
[core]
    autocrlf = true
    eol = lf

и

# <path-to-my-project>/.git/config :
[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    autocrlf = true
[remote "origin"]
    url = git+ssh://***
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

Я думаю, что у меня правильная настройка, и все же я получаю warning: LF will be replaced by CRLF in

Мой текущий обходной путь заключается в sftp файлах в Unix Box и принятии / отправке моих изменений оттуда, что действительно раздражает.

Как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

.... или вы можете попросить git вообще не связываться с eol и позволить вам справиться с этим. В .gitattributes:

*    -text

Это подойдет.

0 голосов
/ 06 апреля 2019

Самый простой способ сделать это - использовать файл gitattributes и указать * text=auto. Затем Git просмотрит файлы, угадает, текстовые они или двоичные, и выполнит автоматическое преобразование конца строки для вас (при условии, что файл был изначально зафиксирован с LF-окончаниями). Вы можете сделать это, создав файл .gitattributes с таким содержимым в хранилище или записав собственный файл в .git/info/attributes. Подробнее см. В документации gitattributes .

Как только вы это сделаете, вы можете установить core.eol в вашей конфигурации (но не core.autocrlf) на то, что вы хотите использовать. Если вы установите его на crlf или native (по умолчанию), Git проверит файлы в CRLF, и, поскольку они являются текстовыми, он запишет их с LF в хранилище. Если вы укажете lf, вы получите LF всегда, даже в рабочем дереве.

В качестве альтернативы можно указать core.autocrlf (а не core.eol) в true, что эквивалентно установке ваших атрибутов gitatributes, содержащих * text=auto и core.eol в crlf.

...