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\
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
egit show
4. color.diff
.<slot
>
- A configuração de um valor <
slot
> emcolor.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
ouHEAD
. Eles são aplicados, respectivamente, a ramificações locais, ramificações de rastreamento remoto, tags, alterações com stash eHEAD
.
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
egit 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 linhasspace-before-tab
destaca um caractere de espaço que aparece antes de um caractere tab ao indentar uma linhablank-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 tabstab-in-indent
destaca uma indentação de tab inicial como um errotrailing-space
é a abreviação da junção de blank-at-eol e blank-at-eofcr-at-eol
destaca um retorno de carro no final das linhastabwidth=
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.