2015-01-01 33 views
6

Ustawiłem w moich zakończeniach linii PhpStorm na LF, ale kiedy zatwierdzam github, czasami widzę, że niektóre pliki ponownie pojawiają się z zakończeniem linii CRLF (pracuję w systemie Windows).PhpStorm + zakończenia linii GIT z LF na CRLF

Zdarza się z tymi samymi plikami, które edytowałem i nikt ich nie edytował między moim zatwierdzeniem/przekazuje do repozytorium. To bardzo irytujące i muszę często zmieniać zakończenia linii do tego samego pliku. Co to może być i jak to naprawić?

Mam też opcję "ostrzec jeśli separatory linii crlf zamiar zostać popełnione"

EDIT

Mój lokalny config git jest to zaznaczone:

[core] 
    repositoryformatversion = 0 
    filemode = false 
    bare = false 
    logallrefupdates = true 
    symlinks = false 
    ignorecase = true 
    hideDotFiles = dotGitOnly 
[remote "origin"] 
    url = https://github.com/* 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "develop"] 
    remote = origin 
    merge = refs/heads/develop 

Moja globalny config jest to:

[user] 
    name = * 
    email = * 
[core] 
    autocrlf = false 

Moje systemowy config to:

[core] 
    symlinks = false 
    autocrlf = false 
[color] 
    diff = auto 
    status = auto 
    branch = auto 
    interactive = true 
[pack] 
    packSizeLimit = 2g 
[help] 
    format = html 
[http] 
    sslCAinfo = /bin/curl-ca-bundle.crt 
[sendemail] 
    smtpserver = /bin/msmtp.exe 

[diff "astextplain"] 
    textconv = astextplain 
[rebase] 
    autosquash = true 

A moja GIT ustawienia w PhpStorm:

My Git Settings in PhpStorm

Odpowiedz

4

Po testach najwyraźniej nie był to problem PhpStorm, ale problem z konfiguracją GIT.

Wydaje się, że w systemie Windows konieczne jest ustawienie:

git config --global core.autocrlf input 

ale również

git config --global core.eol lf 

aby to działało.

8

Można sprawdzić, czy ustawienie Git może pomóc:

git config --global core.autocrlf false 

I zazwyczaj zaleca keeping core.autocrlf to false (są only a few reason to set it to true).

Sprawdź również, czy masz pliki .gitattributes z dyrektywą core.eol.

+0

Użyłem 'git config --global --list' i rzeczywiście było ustawione na true, więc zmieniłem ją na false, tak jak zalecałeś. W moim pliku '.gitattributes' mam tylko' * text = auto' - nic więcej. Spróbuję to sprawdzić, problem wciąż się utrzymuje po zmianie –

+0

Wygląda na to, że to wcale nie pomogło. Nadal dostaję CRLF w moich plikach. Spojrzałem na konsolę Version controle i widzę tam 'git -c core.quotepath = false config core.autocrlf' i na przykład' git -c core.quotepath = false add --ignore-errors - tests/api/* ostrzeżenie: LF zostanie zastąpione przez CRLF w testach/api/* Plik będzie miał swoje oryginalne zakończenia linii w twoim katalogu roboczym. " –

+0

@ MarcinNabiałek' git -c core.quotepath = false config core.autocrlf' wydaje się wymuszać tylko dla tej sesji należy ustawić autocrlf. Co wyjaśniłoby, dlaczego globalna konfiguracja jest ignorowana. – VonC

1

git config --global core.autocrlf input zapewni LF tylko dla wszystkich projektów git.