Article image
Karen Macedo
Karen Macedo23/05/2022 04:29
Compartilhe

Padronização das terminações de linha no Git

  • #Git

Tenho alternado entre Windows e Linux nos últimos meses, e as diferenças realmente são enormes em relação a Java. Mas o que realmente me deixou surpresa foi descobrir que o sistema operacional também impacta no Git.

Ao pesquisar por esse aviso descobri que existem dois tipos de controle de caracteres para terminação de linha em arquivos: LF (Line Feed), equivalente ao início de uma nova linha para Linux e Mac, e CRLF (Carriage Return +LF), que move o cursor para o início de uma nova linha no Windows.

Se você está apenas estudando e desenvolve seus projetos de forma individual, isso não vai gerar nenhum conflito, mas para trabalhar em um ambiente colaborativo onde os desenvolvedores utilizam sistemas operacionais diferentes, é impossível não padronizar. Então por que já não aprender da forma como realmente funciona na prática?

A solução mais recomendada atualmente, é criar um arquivo .gitattributes na pasta raiz do repositório com as seguintes configurações:

* text=auto

(*): o arquivo não vai ser ignorado.

atributo: normaliza todas as terminações de linha do repositório para LF.

text=auto: padroniza apenas as terminações de linha de arquivos de texto para LF, enquanto os arquivos binários permanecem inalterados.

É possível consultar a terminações de linha com o seguinte comando:

git ls-files --eol

Caso as alterações não tenham efeito imediato, é possível forçar a atualização com o seguinte comando:

`git add --renormalize .`

O resultado vai trazer sempre: i/lf (git) | w/crlf (working tree) | attr/text=auto (atributo) | nome do arquivo.

Incrível, não é?! Se você quer aprender mais sobre o tema, é só acessar esse artigo aqui.

Compartilhe
Comentários (5)
Karen Monteiro
Karen Monteiro - 24/05/2022 00:21

Publiquei este artigo no LinkedIn, e recebi um comentário super valioso para a comunidade!

Ainda não testei, mas para quem usa Gradle Wrapper, o #Git afeta também o executável, e a sugestão de macete para "formatá-lo pra linux" foi essa:

sed $'s/\r$//' ./gradlew > ./gradlew.linux

Alguém aqui já teve esse tive de dificuldade com o Git?

Compartilha nos comentários! :)

Gabriel Anna
Gabriel Anna - 23/05/2022 09:22

Excelente Dica

Tawara Martins
Tawara Martins - 23/05/2022 11:25

Obrigada pelas dicas!

Leonardo Meneghini
Leonardo Meneghini - 23/05/2022 10:33

Excelente; eu uso Fedora e Windows, vou conferir isso. Obrigado por compartilhar :)

DO

Davi Oliveira - 23/05/2022 07:49

Obrigado pela Dica!