2015-01-01 9 views
6

Ho impostato nella mia terminazione di linea PhpStorm a LF ma quando mi impegno su Github, a volte vedo alcuni dei file che appaiono nuovamente con la fine linea CRLF (lavoro su Windows).PhpStorm + Terminazioni di linea GIT che cambiano da LF a CRLF

Accade con gli stessi file che ho modificato e nessuno li ha modificati tra i miei commit/push al repository. È molto irritante e ho bisogno di cambiare spesso le terminazioni di linea sullo stesso file. Cosa potrebbe essere e come risolverlo?

Ho anche controllato l'opzione "Avvisa se separatori di linea CRLF sono in procinto di essere impegnata"

EDIT

mio config git locale è questo:

[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 

La mia configurazione globale è this:

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

My config dell'intero sistema è questo:

[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 

E il mio GIT impostazioni nel PhpStorm:

My Git Settings in PhpStorm

risposta

4

Dopo i test ovviamente non era il problema di PhpStorm ma il problema di configurazione GIT.

Sembra che su Windows è necessario impostare:

git config --global core.autocrlf input 

ma anche

git config --global core.eol lf 

per farlo funzionare.

8

È possibile controllare se questa impostazione Git può aiutare:

git config --global core.autocrlf false 

Io di solito raccomando keeping core.autocrlf to false (ci sono only a few reason to set it to true).

Controllare anche se ci sono dei file .gitattributes con una direttiva core.eol al suo interno.

+0

Ho usato 'git config --global --list' ed è stato effettivamente impostato su true, quindi l'ho modificato in falso come consigliato. Nel mio file '.gitattributes' ho solo * * text = auto - niente di più. Cercherò di vederlo il problema persiste ancora dopo questo cambiamento –

+0

Sembra che non ha aiutato affatto. Sto ancora ricevendo CRLF nei miei file. Ho guardato la versione control console e vedo lì 'git -c core.quotepath = false config core.autocrlf'and per esempio' git -c core.quotepath = false aggiungi --ignore-errors - tests/api/* avviso: LF sarà sostituito da CRLF in test/api/* Il file avrà le sue terminazioni di linea originali nella directory di lavoro. –

+0

@ MarcinNabiałek 'git -c core.quotepath = false config core.autocrlf' sembrerebbe forzare solo per questa sessione automatica da impostare. Il che spiegherebbe perché la configurazione globale viene ignorata. – VonC

1

git config --global core.autocrlf input assicurerà LF solo per tutti i progetti git.

Problemi correlati