env:
- Windows 7
- msysgit
Quando eu git commit
diz:
warning: LF will be replaced by CRLF.
Este aviso está atrasado?
Eu edito o arquivo no Windows, o final da linha é CRLF
, assim como esta foto:
E o git muda para LF
para confirmar o repo.
Então, acho que o aviso correto é:
warning: CRLF will be replaced by LF.
Respostas:
Dependendo do editor que você estiver usando, não será necessário salvar um arquivo de texto com LF com o CRLF: editores recentes podem preservar o estilo eol. Mas essa configuração do git insiste em mudar esses ...
Basta certificar-se de que (como eu recomendo aqui ):
Dessa forma, você evita qualquer transformação automática e ainda pode especificá-las através de um
.gitattributes
arquivo ecore.eol
diretivas .Não: você está no Windows e a
git config
página de ajuda mencionaConforme descrito em " git substituindo LF por CRLF ", ele deve ocorrer apenas no checkout (não confirmado), por
core.autocrlf=true
.Conforme mencionado na Xiaopeng 's resposta , esse aviso é o mesmo que:
Como mencionado na
git-for-windows/git
edição 1242 :Nota: Git 2.19 (setembro de 2018), ao usar
core.autocrlf
, o aviso falso "LF será substituído por CRLF" agora é suprimido .Como o quaylar comenta corretamente , se houver uma conversão no commit, é
LF
somente.Esse aviso específico "
LF will be replaced by CRLF
" vem de convert.c # check_safe_crlf () :É chamado por
convert.c#crlf_to_git()
, ele mesmo chamadoconvert.c#convert_to_git()
, ele mesmo chamado porconvert.c#renormalize_buffer()
.E esse último
renormalize_buffer()
é chamado apenas pormerge-recursive.c#blob_unchanged()
.Portanto, suspeito que essa conversão ocorra
git commit
somente se o referido commit fizer parte de um processo de mesclagem.Nota: com o Git 2.17 (Q2 2018), uma limpeza de código adiciona alguma explicação.
Veja commit 8462ff4 (13 Jan 2018) por Torsten Bögershausen (
tboegi
) .(Incorporado por Junio C Hamano -
gitster
- in commit 9bc89b1 , 13 de fevereiro de 2018)Observe que uma regressão introduzida em 8462ff4 ("
convert_to_git()
:safe_crlf/checksafe
torna - seint conv_flags
", 13/01/2018, Git 2.17.0) no ciclo Git 2.17 fez com que asautocrlf
reescritas produzissem uma mensagem de aviso, apesar da configuraçãosafecrlf=false
.Veja commit 6cb0912 (04 Jun 2018) por Anthony Sottile (
asottile
) .(Incorporado por Junio C Hamano -
gitster
- in commit 8063ff9 , 28 de junho de 2018)fonte
core.autocrlf=true
será sempre deu em LF no repo, e CRLF no imho árvore de trabalho (mesmo em condições não-Windows). Fonte: linkSIM, o aviso está ao contrário.
E, de fato, nem deveria ser um aviso em primeiro lugar. Porque todo esse aviso está dizendo (mas, infelizmente, para trás) é que os caracteres CRLF no seu arquivo com terminações de linha do Windows serão substituídos pelos LFs no commit. O que significa que é normalizado para as mesmas terminações de linha usadas pelo * nix e pelo MacOS.
Nada de estranho está acontecendo, esse é exatamente o comportamento que você normalmente gostaria.
Esse aviso em sua forma atual é uma das duas coisas:
;)
fonte
- Atualização em 9 de julho ---
Removido "Está correto e preciso", como comentado por @mgiuca
======
NÃO . NÃO está falando sobre seus arquivos atualmente
CRLF
. Ele está falando sobre arquivos comLF
.Deve ler-se:
Esta imagem deve explicar o que isso significa.
fonte
Tudo isso assume
core.autocrlf=true
Erro original:
O que o erro DEVE ler:
Explicação aqui :
Basicamente, um arquivo local que era anteriormente LF agora terá CRLF localmente
fonte
git config --global core.autocrlf false
funciona bem para configurações globais.Mas se você estiver usando o Visual Studio, também poderá ser necessário modificar
.gitattributes
alguns tipos de projetos ( por exemplo, aplicativo de biblioteca de classes c # ):* text=auto
fonte
Depois que eu defini
core.autocrlf=true
, estava recebendo "LF será substituído por CRLF" (note que não "CRLF será substituído por LF") quando eu estavagit add
ing (ou talvez estivesse ligadogit commit
?) Arquivos editados nas janelas de um repositório (que usa LF) que foi retirado antes de eu definircore.autocrlf=true
.Fiz um novo check-out
core.autocrlf=true
e agora não estou recebendo essas mensagens.fonte
Se você estiver usando o Visual Studio 2017, 2019, poderá:
fonte
.gitconfig
ou.git/config
, não.gitignore
, que especifica os arquivos a serem ignorados pelo git.Faça apenas uma coisa simples:
fonte