Essas mensagens são devido ao valor padrão incorreto core.autocrlfno Windows.
O conceito de autocrlfé manipular conversões de finais de linha de forma transparente. E faz!
Más notícias : o valor precisa ser configurado manualmente.
Boas notícias : isso deve ser feito apenas UMA vez por instalação do git (por configuração do projeto também é possível).
Como autocrlffunciona :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
Aqui crlf= marcador de fim de linha no estilo win, lf= estilo unix (e mac osx).
(pré-osx crnão afetado por nenhuma das três opções acima)
Quando esse aviso aparece (no Windows)
- autocrlf= truese você possui estilo unix lfem um dos seus arquivos (= RARAMENTE),
- autocrlf= inputse você possui estilo win crlfem um dos seus arquivos (= quase SEMPRE),
- autocrlf= false- NUNCA!
O que esse aviso significa
O aviso " LF será substituído pelo CRLF " diz que você (tendo autocrlf= true) perderá o seu LF no estilo unix após o ciclo de confirmação da compra (ele será substituído pelo CRLF no estilo do Windows). O Git não espera que você use LF estilo unix no Windows.
O aviso " CRLF será substituído por LF " diz que você (tendo autocrlf= input) perderá seu CRLF no estilo do Windows após um ciclo de confirmação (ele será substituído pelo LF no estilo unix). Não use inputsob janelas.
Mais uma maneira de mostrar como autocrlffunciona
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
onde x é CRLF (estilo Windows) ou LF (estilo Unix) e setas representam
file to commit -> repository -> checked out file
Como consertar
O valor padrão para core.autocrlfé selecionado durante a instalação do git e armazenado em gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig) em todo o sistema . Também há (em cascata na seguinte ordem):
- gitconfig "global" (por usuário) localizado em ~/.gitconfig, ainda outro
- gitconfig "global" (por usuário) em $XDG_CONFIG_HOME/git/configou $HOME/.config/git/confige
- gitconfig "local" (por repo) no .git/configdiretório de trabalho.
Portanto, escreva git config core.autocrlfno diretório de trabalho para verificar o valor atualmente usado e
- adicionar autocrlf=falseà solução gitconfig do sistema # por sistema
- git config --global core.autocrlf false # solução por usuário
- git config --local core.autocrlf false # solução por projeto
Avisos
- as git configconfigurações podem ser substituídas pelas gitattributesconfigurações.
- a crlf -> lfconversão ocorre apenas ao adicionar novos arquivos, os crlfarquivos já existentes no repositório não são afetados.
Moral (para Windows):
- use core.autocrlf= truese você planeja usar este projeto no Unix também (e não deseja configurar seu editor / IDE para usar terminações de linha unix),
- use core.autocrlf= falsese você planeja usar este projeto apenas no Windows ( ou você configurou seu editor / IDE para usar finais de linha unix),
- nunca use core.autocrlf=, a inputmenos que você tenha um bom motivo para ( por exemplo, se você estiver usando utilitários unix no Windows ou se tiver problemas com makefiles),
PS O que escolher ao instalar o git para Windows?
Se você não usar nenhum dos seus projetos no Unix, não concorde com a primeira opção padrão. Escolha o terceiro ( Checkout como está, confirme como está ). Você não verá esta mensagem. Sempre.
PPS Minha preferência pessoal é configurar o editor / IDE para usar finais no estilo Unix e definir core.autocrlfcomo false.