git config

Nesse documento, a gente vai aprender mais sobre o comando git config. A gente discutiu o uso do git config na página Como Configurar Repositórios. O git config é a função conveniente usada para definir os valores de configuração do Git em projetos de nível global ou local. Esses níveis de configuração correspondem aos arquivos de texto do .gitconfig. Executar o git config modifica arquivos de texto de configuração. A gente vai falar das configurações comuns, como e-mail, nome de usuário e editor. Também vamos falar sobre aliases do Git, que permitem a criação de atalhos para operações usadas com frequência. Saber mais sobre o git config e sobre as diversas configurações do Git ajudam a criar fluxos de trabalho Git poderosos e personalizados.

Uso

O caso de uso mais básico para o git config é invocar o comando com o nome de configuração. Isso vai exibir o valor definido desse nome. Nomes de configuração são cadeias de caracteres delimitadas por pontos compostas de "seções" e "chaves" baseadas na hierarquia. Por exemplo: user.email

 git config user.email

Nesse exemplo, o e-mail é propriedade filho do bloco de configuração do usuário. Isso retorna o endereço de e-mail configurado que o Git associa com commits criados no local.

Níveis e arquivos do git config

Antes de falar mais sobre o uso do git config, a gente vai discutir os níveis de configuração. O comando git config pode aceitar argumentos para especificar o nível de configuração no qual operar. Os seguintes níveis de configuração estão disponíveis:

  • --local

Por padrão, o git config grava em nível local se não houver nenhuma opção de configuração. A configuração de nível local é aplicada no repositório do contexto que o git config for invocado. Os valores de configuração local são armazenados no arquivo que pode ser encontrado no diretório .git do repositório: .git/config

  • --global

A configuração de nível global é específica do usuário. Isso quer dizer que ela é aplicada a usuários do sistema operacional. Os valores de configuração global são armazenados no arquivo localizado no diretório base do usuário. ~ /.gitconfig em sistemas Unix e C:\\.gitconfig no Windows

  • --system

A configuração de nível do sistema é aplicada em toda a máquina. Ela abrange todos os usuários do sistema operacional e todos os repositórios. O arquivo da configuração de nível do sistema está no arquivo gitconfig localizado fora do caminho raiz do sistema. $(prefix)/etc/gitconfig nos sistemas Unix. No Windows, esse arquivo pode ser encontrado em C:\Documents and Settings\All Users\Application Data\Git\config no Windows XP e em C:\ProgramData\Git\config no Windows Vista e versões mais recentes.

Portanto, a ordem de prioridade para os níveis de configuração é: local, global, sistema. Quando o Git procurar valores de configuração, ele vai começar no nível local e ir até o nível de sistema.

Como gravar valores

Para ampliar o conhecimento sobre git config, a gente vai analisar o exemplo no qual o seguinte valor foi gravado:

 git config --global user.email "your_email@example.com"

Nesse exemplo, o valor your_email@example.com é gravado no nome de configuração user.email. Ele usa o sinalizador --global, então esse valor é definido para o usuário atual do sistema operacional.

git config editor – core.editor

Muitos comandos Git iniciam o editor de texto para solicitar mais entradas. Um dos casos de uso mais comuns para git config é configurar qual editor o Git deve usar. A tabela de editores populares e comandos git config correspondentes é apresentada abaixo:

Editor config command
Atom ~ git config --global core.editor "atom --wait"~
emacs ~ git config --global core.editor "emacs"~
nano ~ git config --global core.editor "nano -w"~
vim ~ git config --global core.editor "vim"~
Sublime Text (Mac) ~ git config --global core.editor "subl -n -w"~
Sublime Text (Win, instalação 32-bit) ~ git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"~
Sublime Text (Win, instalação 64 bit) ~ git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"~
Textmate ~ git config --global core.editor "mate -w"~

Ferramentas de merge

Caso conflitos de merge aconteçam, o Git inicia "ferramentas de merge". Por padrão, o Git usa implementações internas do programa de comparação comum do Unix. O programa de comparação interno do Git é o visualizador mínimo de conflitos de merge. Em vez disso, há muitas resoluções externas de terceiros que podem ser usadas. Para ver o resumo de diversas ferramentas de merge e configuração, consulte o guia de dicas e ferramentas para resolver conflitos com o Git.

git config --global merge.tool kdiff3

Saídas coloridas

O Git tem suporte para saídas de terminal coloridas, o que ajuda a ler com rapidez as saídas do Git. É possível customizar a saída do Git para usar temas de cores personalizados. O comando git config é usado para definir esses valores de cor.

color.ui

Essa é a variável mestre para cores do Git. Definir a variável como false desabilita todas as saídas de terminal coloridas do Git.

 $ git config --global color.ui false

Por padrão, color.ui é definido como auto, o que aplica cores ao fluxo de saída do terminal imediato. A configuração automática omite a saída do código de cor se o fluxo de saída for redirecionado ao arquivo ou a outro processo.

É possível definir o valor de color.ui como always, o que aplica a saída do código de cor ao redirecionar o fluxo de saída para arquivos ou pipes. Isso pode, sem querer, causar problemas, já que o pipe receptor pode não estar esperando a entrada codificada com cores.

Valores de cor do Git

Além do color.ui, há várias outras configurações granulares de cor. Assim como o color.ui, essas configurações também podem ser definidas como false, auto ou always. Elas também podem ter valores de cor definidos específicos. Alguns exemplos de valores de cor suportados são:

  • normal
  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white

As cores também podem ser especificadas como códigos de cor hexadecimais, como #ff0000, ou valores de cor ANSI 256, se forem suportados pelo terminal.

Configurações de cor do Git

1. color.branch

  • Configura a cor de saída do comando de ramificação do Git

2. color.branch>

  • Esse valor também é válido para a saída de ramificação do Git. <slot> é um dos seguintes:
    • 1. current: a ramificação atual
    • 2. local: a ramificação local
    • 3. remote: a ref. de ramificação remota em refs/remotes
    • 4. upstream: a ramificação de monitoramento de upstream
    • 5. plain: todos as outras ref.

3. color.diff

  • Aplica cores na saída do git diff, do git log e do git show

4. color.diff<slot>

  • Configurar valores de <slot> no color.diff diz ao git qual parte do patch deve usar qual cor específica.
    • 1. context: o texto de contexto do diff. Os contextos Git são as linhas de conteúdo de texto mostradas em diffs ou patches que destacam mudanças.
    • 2. plain: sinônimo para contexto
    • 3. meta: aplica cor às informações meta do diff
    • 4. frag: aplica cores ao "cabeçalho de fragmento" ou à "função no cabeçalho de fragmento"
    • 5. old: aplica cor às linhas removidas do diff
    • 6. new: colore as linhas adicionadas do diff
    • 7. commit: colore os cabeçalhos de commit no diff
    • 8. whitespace: define cores para erros de espaço em branco no diff

5. color.decorate.>

  • Personaliza a cor para a saída do git log --decorate. Os valores de <slot> suportados são: branch, remoteBranch, tag, stash ou HEAD. Eles são válidos para as ramificações locais, ramificações de monitoramento remoto, tabulações, mudanças que passaram por stash e HEAD.

6. color.grep

  • Aplica cor à saída do git.grep

7. color.grep.>

  • Também é válido para o git grep. A variável do <slot> especifica qual parte da saída do grep deve ter cor aplicada.
    • 1. context: texto não correspondente em linhas de contexto
    • 2. filename: prefixo do nome do arquivo
    • 3. function: linhas do nome da função
    • 4. linenumber: prefixo do número da linha
    • 5. match: texto correspondente
    • 6. matchContext: texto correspondente em linhas de contexto
    • 7. matchSelected: texto correspondente nas linhas selecionadas
    • 8. selected: texto não correspondente nas linhas selecionadas
    • 9. separator: separadores entre campos em linhas (:, -, e =) e entre fragmentos (--)

8. color.interactive

  • Essa variável aplica cor em exibições e prompts interativos. Exemplos incluem o git add --interactive e o git clean --interactive

9. color.interactive.

  • A variável do pode ser especificada para atingir "saídas interativas" mais específicas. Os valores de <slot> disponíveis são: prompt, header, help, error; e cada ato na saída interativa correspondente.

10. color.pager

  • Habilita ou desabilita saídas coloridas quando o pager está em uso

11. color.showBranch

  • Habilita ou desabilita saídas coloridas para o comando de ramificação do git show

12. color.status

  • O valor booleano que habilita ou desabilita a saída colorida para o status do Git

13. color.status.<slot>

Usado para especificar cores personalizadas para elementos de status do git específicos. <slot> suporta os seguintes valores:

  • 1. header
    • Visa o texto do cabeçalho da área do status
  • 2. added or updated
    • Arquivos de destino que foram adicionados, mas não foram confirmados
  • 3. changed
    • Arquivos de destino que foram modificados, mas não foram adicionados ao índice Git
  • 4. untracked
    • Arquivos de destino que não são monitorados pelo Git
  • 5. branch
    • Aplica cor à ramificação atual
  • 6. nobranch
    • A cor do aviso "no branch"
  • 7. unmerged
    • Colore arquivos que têm mudanças que não passaram pelo merge

Aliases

Você deve conhecer o conceito de aliases por causa da linha de comando do sistema operacional. Caso contrário, aliases são atalhos personalizados que definem qual comando é expandido em comandos mais longos ou combinados. Eles economizam tempo e energia ao digitar comandos usados com frequência. O Git oferece o sistema de alias. O caso de uso comum para aliases do Git é fazer atalhos para o comando de commit. Os aliases do Git são armazenados nos arquivos de configuração. Isso significa que você pode usar o comando git config para configurar aliases.

 git config --global alias.ci commit

Esse exemplo cria o ci alias para o comando git commit. Você pode então invocar o git commit executando o git ci. Os aliases também podem fazer referências a outros aliases para criar combinações poderosas.

 git config --global alias.amend ci --amend

Esse exemplo cria o alias amend, que compõe o ci alias no novo alias que usa --amend flag.

Formatação e espaço em branco

O Git tem vários recursos de "espaço em branco" que podem ser configurados para destacar itens de espaço em branco ao usar o git diff. Os itens de espaço em branco são destacados usando a cor configurada color.diff.whitespace

Os recursos a seguir são habilitados por padrão:

  • blank-at-eol destaca espaços em branco órfãos nas terminações de linhas
  • space-before-tab destaca caracteres de espaço que aparecem antes de caracteres de tabulação ao recuar linhas
  • blank-at-eof destaca linhas em branco inseridas no final de arquivos

Os recursos a seguir são desativados por padrão

  • indent-with-non-tab destaca linhas que estão recuadas com espaços em vez de tabulação
  • tab-in-indent destaca recuos de tabulação iniciais como erro
  • trailing-space é a abreviação de blank-at-eol e blank-at-eof
  • cr-at-eol destaca retornos de carro nas terminações de linhas
  • tabwidth= define quantas posições de caractere as tabulações ocupam. O valor padrão é 8. Os valores permitidos são 1–63

Resumo

Nesse artigo, a gente abordou o uso do git config e discutiu como esse comando é ótimo para a edição de arquivos brutos de git config no sistema de arquivos. A gente analisou operações de leitura e gravação para opções de configuração e padrões de configuração comuns:

  • Como configurar o editor Git
  • Como substituir níveis de configuração
  • Como redefinir padrões de configuração
  • Como customizar cores do git

No geral, o git config é a ferramenta auxiliar que oferece atalhos para a edição de arquivos brutos de git config no disco. A gente falou sobre opções detalhadas de personalização pessoal. O conhecimento básico sobre opções de configuração git é pré-requisito para configurar repositórios. Consulte o guia para demonstrações dos métodos básicos.

Pronto para aprender sobre o Git?

Experimente este tutorial interativo.

Comece agora mesmo