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:
Material relacionado
Git Branch
VER SOLUÇÃO
Aprenda a usar o Git com o Bitbucket Cloud
--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 | comando config |
emacs | comando config |
nano | comando config |
vim | comando config |
Sublime Text (Mac) | comando config |
Sublime Text (Windows, instalação de 32 bits) | comando config |
Sublime Text (Windows, instalação de 64 bits) | comando config |
TextMate | comando config |
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árias funções de "espaço em branco" que podem ser configuradas 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 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
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 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.
Compartilhar este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.