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.emailNesse 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 |
|
emacs |
|
nano |
|
vim |
|
Sublime Text (Mac) |
|
Sublime Text (Windows, instalação de 32 bits) |
|
Sublime Text (Windows, instalação de 64 bits) |
|
TextMate |
|
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 kdiff3Saí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 falsePor 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 logegit show
4. color.diff.<slot>
A configuração de um valor <
slot> emcolor.diffindica 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,stashouHEAD. 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 prompts e displays interativos. Os exemplos são
git add --interactiveegit 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 commitEsse 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 --amendEsse 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-eoldestaca espaços em branco órfãos no final das linhasspace-before-tabdestaca um caractere de espaço que aparece antes de um caractere tab ao indentar uma linhablank-at-eofdestaca linhas em branco inseridas no final de um arquivo
As seguintes funções são desativadas por padrão:
indent-with-non-tabdestaca uma linha que foi indentada com espaços, ao invés de tabstab-in-indentdestaca 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-eoldestaca um retorno de carro no final das linhastabwidth=<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.