👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Learn more on the GitHub blog.


Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.
Versão do artigo: Enterprise Server 2.20

Configurar o Git para uso com delimitadores de linha

Para evitar problemas com diffs, é possível configurar o Git para operar adequadamente com delimitadores de linhas.

Neste artigo

Você conseguiu encontrar o que estava procurando?

Every time you press return on your keyboard you insert an invisible character called a line ending. Different operating systems handle line endings differently.

When you're collaborating on projects with Git and GitHub Enterprise, Git might produce unexpected results if, for example, you're working on a Windows machine, and your collaborator has made a change in OS X.

You can configure Git to handle line endings automatically so you can collaborate effectively with people who use different operating systems.

Configurações globais para delimitadores de linhas

O comando git config core.autocrlf é utilizado para alterar a forma como o Git trabalha com delimitadores de linhas. É um argumento único.

No OS X, você simplesmente introduz input (entrada) na configuração. Como por exemplo:

$ git config --global core.autocrlf input
# Configure Git to ensure line endings in files you checkout are correct for OS X

No Windows, você simplesmente introduz true na configuração. Como por exemplo:

$ git config --global core.autocrlf true
# Configure Git to ensure line endings in files you checkout are correct for Windows.
# For compatibility, line endings are converted to Unix style when you commit files.

No Linux, você simplesmente introduz input (entrada) na configuração. Como por exemplo:

$ git config --global core.autocrlf input
# Configure Git to ensure line endings in files you checkout are correct for Linux

Configurações por repositórios

Optionally, you can configure a .gitattributes file to manage how Git reads line endings in a specific repository. When you commit this file to a repository, it overrides the core.autocrlf setting for all repository contributors. This ensures consistent behavior for all users, regardless of their Git settings and environment.

O arquivo .gitattributes deve ser criado na raiz do repositório e, como qualquer outro arquivo, com commit.

Um arquivo .gitattributes se parece com uma tabela de duas colunas:

  • À esquerda está o nome do arquivo para o Git fazer a correspondência.
  • À direita está a configuração do delimitador de linha que o Git deve usar para esses arquivos.

Exemplo

Segue aqui um exemplo de arquivo .gitattributes. You can use it as a template for your repositories:

# Defina o comportamento padrão, caso as pessoas não tenham configurado o core.autocrlf.
* text=auto

# Declare explicitamente os arquivos de texto que você deseja que sempre sejam normalizados e convertidos 
# em delimitadores de linha nativos ao fazer checkout.
*.c text
*.h text

# Declare os arquivos que sempre terão delimitadores de linha CRLF ao fazer checkout.
*.sln text eol=crlf

# Indique todos os arquivos que são verdadeiramente binários e que não devem ser modificados.
*.png binary
*.jpg binary

You'll notice that files are matched—*.c, *.sln, *.png—, separated by a space, then given a setting—text, text eol=crlf, binary. We'll go over some possible settings below.

  • text=auto Git will handle the files in whatever way it thinks is best. Essa é uma boa opção padrão.

  • text eol=crlf Git will always convert line endings to CRLF on checkout. Você deve usar isso para arquivos que devem manter os delimitadores CRLF, até mesmo no OSX ou Linux.

  • text eol=lf Git will always convert line endings to LF on checkout. Você deve usar isso para arquivos que devem manter os delimitadores LF, mesmo no Windows.

  • binary Git will understand that the files specified are not text, and it should not try to change them. A configuração binary (binário) também é um pseudônimo para -text -diff.

Atualizar um repositório após alterar delimitadores de linha

When you set the core.autocrlf option or commit a .gitattributes file, you may find that Git reports changes to files that you have not modified. Git has changed line endings to match your new configuration.

To ensure that all the line endings in your repository match your new configuration, backup your files with Git, delete all files in your repository (except the .git directory), then restore the files all at once.

  1. Salva seus arquivos atuais no Git, assim seu trabalho não será perdido.
    $ git add . -u
    $ git commit -m "Saving files before refreshing line endings"
  2. Adiciona todos os seus arquivos alterados novamente e normaliza os delimitadores de linha.
    $ git add --renormalize .
  3. Mostra os arquivos regravados e normalizados.
    $ git status
  4. Faz commit das alterações em seu repositório.
    $ git commit -m "Normalize all the line endings"

Leia mais

Você conseguiu encontrar o que estava procurando?

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato