Com o Git, como desativo o aviso "LF será substituído por CRLF"


153

Com o Git, ao usar a autocrlf = trueflag, um aviso ainda é dado quando as terminações de linha são alteradas.

Entendo para que serve o aviso e como desativar o sinalizador de final de linha, mas como desativo o aviso?


Todas as respostas aqui são obsoletas - depois que o git introduziu os gitattributes. Safecrlf é seu amigo autocrlf não é! Por favor, veja a minha resposta
Rusi

Respostas:


279

Você pode desativar o aviso com

git config --global core.safecrlf false

(Isso desativará apenas o aviso, não a função em si.)


desligar o aviso impedirá que o git substitua lf por crlf? @chronial
aidonsnous

3
@aidonsnous Do git docs : Se core.safecrlf estiver definido como "true" ou "warn", o git verificará se a conversão é reversível para a configuração atual do core.autocrlf. Para "verdadeiro", o git rejeita conversões irreversíveis; para "alertar", o git apenas imprime um aviso, mas aceita uma conversão irreversível. Se você não precisar rejeitar conversões irreversíveis, definir core.safecrlf como false suprime o aviso, mas ainda assim converte automaticamente.
precisa saber é o seguinte

5

Você deve usar core.autocrlf inpute core.eol input. Ou apenas não deixe mudança git os fins de linha em tudo com autocrlf falsee se livrar de destacar de CRLFs em diffs, etc com core.whitespace cr-at-eol.

Espero que isto ajude


Geralmente, você deseja que seus scripts BAT terminem e sejam confirmados com CRLF, e seu script SH com LF.
Sandburg

0

Você está procurando a core.whitespaceopção (veja git config --helppara detalhes).

Você pode definir esta opção da seguinte maneira:

$ git config core.whitespace cr-at-eol

0

Eu usei desta maneira:

Salve seus arquivos atuais no Git, para que nenhum trabalho seja perdido.

git add . -u
git commit -m "Saving files before refreshing line endings"

Remova todos os arquivos do índice do Git.

git rm --cached -r .

Reescreva o índice Git para selecionar todas as novas terminações de linha.

git reset --hard

Adicione todos os seus arquivos alterados novamente e prepare-os para uma confirmação. Esta é sua chance de inspecionar quais arquivos, se houver, não foram alterados.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Confirme as alterações no seu repositório.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/


13
Acredito que o OP estava tentando evitar mais ver esses avisos. Não normaliza todas as terminações de linha.
Mike Cluck

git rm --cached -r . && git reset --hardparece fazer o truque, obrigado
Shanimal 15/10/1918

0

Curiosamente, eu tinha aplicado as duas configurações, como explicado aqui, e meu arquivo .gitconfig continha essas 2 linhas:

[core]
       autocrlf = false
       whitespace = cr-at-eol

No entanto, eu recebi o aviso. Agora, só para tentar, comentei as duas linhas e o aviso realmente desapareceu. No entanto, não faço ideia por que os coloquei em primeiro lugar ...


0

A configuração "core.safecrlf false" funciona. No entanto, depois que alterei o valor para 'true', a saída muda de 'warning' para 'fatal', como mostrado abaixo.

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$

No git recente, é melhor usar os atributos gitat do que o autocrlf. Veja minha resposta . Todas as respostas (neste q) são antigas e obsoletas
Rusi 29/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.