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 inicial do usuário. ~ /.gitconfig em sistemas Unix e C:\Users\<username>\.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 principal para as cores do Git. Definir como false vai desabilitar todas as saídas coloridas do terminal 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 prompts 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

As seguintes funções são ativadas 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

As seguintes funções são desativadas 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=<n> 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

Nesse documento, vamos falar sobre a utilização do comando git config. Falamos sobre como o comando é um método convincente para editar arquivos git config brutos no sistema de arquivos. Vimos as operações básicas de leitura e gravação das opções de configuração. Vimos os padrões de configuração comuns:

  • Como configurar o editor do Git

  • Como substituir os níveis de configuração

  • Como redefinir os padrões de configuração

  • Como personalizar as cores do Git

Em geral, git config é uma ferramenta auxiliar que oferece um atalho para editar arquivos git config brutos em disco. A gente apresentou em profundidade as opções de personalização pessoal. O conhecimento básico das opções de configuração do git é um pré-requisito para configurar um repositório. Veja uma demonstração dos fundamentos no guia.  

Recomendado para você

Blog do Bitbucket

Caminho de aprendizagem de DevOps

Saiba mais sobre o Git

Encontre mais guias e recursos de Git neste hub.