Olá! No momento, esta página ainda está sendo desenvolvida ou traduzida. Para obter as informações mais recentes, acesse a documentação em inglês.
Versão do artigo: Enterprise Server 2.15

Esta versão do GitHub Enterprise será descontinuada em Esta versão do GitHub Enterprise foi descontinuada em 2019-10-16. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

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.

Todas as vezes que você pressiona return no seu teclado, na verdade você está inserindo um caractere invisível denominado delimitador de linha. Historicamente, sistemas operacionais diferentes trataram os delimitadores de linhas de forma distintas.

Quando você visualiza as alterações em um arquivo, o Git opera os delimitadores de linhas à sua própria maneira. Como você está colaborando com projetos no Git e no GitHub Enterprise, o Git poderá produzir resultados inesperados se, por exemplo, você estiver trabalhando em uma máquina com Windows e seu colaborador fez uma alteração no OS X.

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. Por exemplo:

$ git config --global core.autocrlf input
# Configura o Git no OS X para operar adequadamente com delimitadores de linhas

On Windows, you simply pass true to the configuration. Por exemplo:

$ git config --global core.autocrlf true
# Configure Git on Windows to properly handle line endings

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

$ git config --global core.autocrlf input
# Configura o Git no Linux para operar adequadamente com delimitadores de linhas

No OS X e Linux, você normalmente deseja introduzir input (entrada) nesta configuração. On Windows, you usually want to use true. Por exemplo:

$ git config --global core.autocrlf input
# Configure Git on OS X or Linux to properly handle line endings

$ git config --global core.autocrlf true
# Configure Git on Windows to properly handle line endings

Configurações por repositórios

Como opção, é possível configurar a forma como o Git gerencia os delimitadores de linhas por repositório configurando um arquivo especial .gitattributes. É feito commit desse arquivo no repositório, o que anula a configuração core.autocrlf de um indivíduo, garantindo um comportamento consistente para todos os usuários, independentemente das configurações deles no Git. A vantagem de um arquivo .gitattributes é que as as configurações de linhas são associadas ao repositório. Você não precisa se preocupar se os colaboradores têm as mesmas configurações de linhas que você.

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:

Exemplo

Segue aqui um exemplo de arquivo .gitattributes. Você pode usá-lo como modelo para seus repositórios:

# 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

Você observará que os arquivos são correspondentes--*.c, *.sln, *.png--, separados por um espaço e recebem uma configuração--text, text eol=crlf, binary. Vamos ver algumas configurações possíveis abaixo.

`text=auto`
O Git vai operar os arquivos da forma que achar melhor. Essa é uma boa opção padrão.
`text eol=crlf`
Git will always convert line endings to `CRLF` on checkout. You should use this for files that must keep `CRLF` endings, even on OSX or 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`
O Git entenderá que os arquivos especificados não são texto e não deverá tentar alterá-los. The `binary` setting is also an alias for `-text -diff`.

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

Depois de configurar a opção core.autocrlf e fazer commit de um arquivo .gitattributes, você vai notar que o Git deseja fazer commit de arquivos que você não modificou. Neste ponto, o Git está ansioso para alterar os delimitadores de linhas em todos os arquivos para você.

The best way to automatically configure your repository's line endings is to first backup your files with Git, delete every file in your repository (except the .git directory), and 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

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato