git config

Nesse documento, a gente vai aprender mais sobre o comando git config. O uso do git config foi abordado na página Como configurar repositórios. O comando git config é a função conveniente usada para definir 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 do git config é chamar o comando com o nome de configuração, o que 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 em que o git config for invocado. Os valores de configuração local são armazenados em um 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, ou seja, ela é aplicada a usuários do sistema operacional. Os valores de configuração global são armazenados em um arquivo localizado no diretório de base do usuário. ~ /.gitconfig em sistemas Unix e C:\Users\\.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 de configuração de nível do sistema está no arquivo gitconfig localizado fora do caminho raiz do sistema. $(prefix)/etc/gitconfig em 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 o 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 do git config é configurar qual editor o Git deve usar. A tabela de editores populares e comandos git config correspondentes é apresentada abaixo:

Editor comando config
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 (Windows, instalação de 32 bits) ~ git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"~
Sublime Text (Windows, instalação de 64 bits) ~ 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 uma "ferramenta de merge". Por padrão, o Git usa uma implementação interna 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 de merge externas de terceiros que podem ser usadas. Para ver o resumo de diversas ferramentas de merge e configuração, consulte o guia em 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 cores ao redirecionar o fluxo de saída para arquivos ou pipes. Essa ação 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 específicos definidos. Alguns exemplos de valores de cor suportados são:

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

As cores também podem ser especificadas como código de cores 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 Git branch

2. color.branch.<slot>

  • Este valor também se aplica à saída do Git branch. <slot> é um dos seguintes:
    • 1. current: a ramificação atual
    • 2. local: uma ramificação local
    • 3. remote: uma ramificação remota em refs/remotes
    • 4. upstream: uma ramificação de rastreamento upstream
    • 5. plain: qualquer outra ref

3. color.diff

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

4. color.diff.<slot>

  • A configuração de um valor <slot> em color.diff indica ao git em qual parte do patch usar uma cor específica.
    • 1. context: o texto de contexto da comparação. O contexto Git são as linhas de conteúdo de texto mostradas em uma comparação ou patch que destaca as mudanças.
    • 2. plain: sinônimo de contexto
    • 3. meta: aplica cor às metainformações da comparação
    • 4. frag: aplica cor ao "cabeçalho do fragmento" ou à "função no cabeçalho do fragmento"
    • 5. old: aplica cor às linhas removidas na comparação
    • 6. new: colore as linhas adicionadas da comparação
    • 7. commit: colore os cabeçalhos de commit dentro da comparação
    • 8. whitespace define uma cor para quaisquer erros de espaço em branco em uma comparação

5. color.decorate.<slot>

  • Personaliza a cor da saída do git log --decorate. Os valores <slot> aceitos são: branch, remoteBranch, tag, stash ou HEAD. Eles são aplicados, respectivamente, a ramificações locais, ramificações de rastreamento remoto, tags, alterações com stash e HEAD.

6. color.grep

  • Aplica cor à saída do git grep.

7. color.grep. <slot>

  • Vale também para git grep. A variável <slot> especifica em qual parte da saída do grep aplicar cor.
    • 1. context: texto não correspondente nas linhas de contexto
    • 2. filename: prefixo do nome do arquivo
    • 3. function: linhas de nome da função
    • 4. linenumber: prefixo do número de linha
    • 5. match: texto correspondente
    • 6. matchContext: texto correspondente nas 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 uma linha (:, - e =) e entre fragmentos (--)

8. color.interactive

  • Esta variável aplica cores para solicitações e displays interativos. Os exemplos são git add --interactive e git clean --interactive

9. color.interactive.<slot>

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

10. color.pager

  • Habilita ou desabilita a saída colorida quando o paginador está em uso

11. color.showBranch

  • Habilita ou desabilita a saída colorida para o comando git show branch

12. color.status

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

13. color.status.<slot>

Usado para especificar cores personalizadas para elementos especificados do git status. <slot> comporta os valores a seguir:

  • 1. header
    • Destinado ao texto do cabeçalho da área de status
  • 2. added ou updated
    • Destinados a arquivos que foram adicionados, mas não tiveram commit realizado
  • 3. changed
    • Destinado a arquivos que foram modificados, mas não adicionados ao git index
  • 4. untracked
    • Destinados a arquivos que não são rastreados pelo Git
  • 5. branch
    • Aplica cor à ramificação atual
  • 6. nobranch
    • A cor do aviso "sem ramificação" é exibida
  • 7. unmerged
    • Colore arquivos que têm alterações não mescladas

Aliases

Talvez você conheça o conceito de aliases por causa da linha de comando do sistema operacional. Se não conhece: 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. Então você pode usar o comando git config para configurar aliases.

 git config --global alias.ci commit

Esse exemplo cria o alias ci para o comando git commit. Você pode então chamar 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 alias ci 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 seguintes recursos são ativados por padrão:

  • blank-at-eol destaca espaços em branco órfãos no final das linhas
  • space-before-tab destaca um caractere de espaço que aparece antes de um caractere tab ao indentar uma linha
  • blank-at-eof destaca linhas em branco inseridas no final de um arquivo

Os seguintes recursos são desativados por padrão:

  • indent-with-non-tab destaca uma linha que foi indentada com espaços, ao invés de tabs
  • tab-in-indent destaca uma indentação de tab inicial como um erro
  • trailing-space é a abreviação da junção de blank-at-eol e blank-at-eof
  • cr-at-eol destaca um retorno de carro no final das linhas
  • tabwidth= define quantas posições de caracteres uma aba ocupa (o valor padrão é 8, e os valores permitidos são de 1 a 63)

Resumo

Pronto(a) para aprender Git?

Tente este tutorial interativo.

Comece agora mesmo