circle-exclamation
Use o menu para escolher a versão. A “dev” é a mais recente, mas pode mudar a qualquer momento. Para estabilidade, use uma fixa.
githubEditar

4.4.1 Escopos de configuração

Antes de aprender a criar ou alterar configurações, é importante entender onde o Git guarda essas informações e até onde cada configuração vale.

Configurar o Git é parecido com ajustar preferências em um aplicativo. Algumas opções são gerais e afetam todo o computador, outras dizem respeito apenas à pessoa que está usando o Git, e outras ainda valem somente para um projeto específico. No Git, essas diferenças são organizadas por meio de escopos de configuração. Um escopo define quem é afetado por uma configuração e em quais projetos ela se aplica.

A ideia por trás dos escopos

Quando o Git precisa de uma informação de configuração, ele não olha para um único lugar. Ele verifica vários níveis, do mais específico para o mais geral, até encontrar um valor que possa usar.

Esses níveis são os escopos de configuração. Cada escopo representa um contexto diferente: o computador, a pessoa usuária ou um projeto específico. Nem todos esses contextos existem o tempo todo, e entender isso é essencial para compreender o comportamento do Git.

O Git possui três escopos principais: system, global e local.

Escopo de sistema (system)

O escopo de sistema pode ser comparado às configurações do console ou do computador onde os jogos rodam. São preferências que afetam tudo, independentemente de quem está usando. Em um jogo, seriam opções como a resolução da tela ou o idioma do console.

No Git, o escopo system define configurações que se aplicam a todas as pessoas usuárias e a todos os repositórios do computador. Esse escopo existe sempre, enquanto o Git estiver instalado na máquina, pois ele não depende de um projeto ou de uma pessoa específica.

Essas configurações ficam armazenadas em um arquivo de configuração do sistema, que o Git lê sempre que é executado. Em sistemas Linux, esse arquivo costuma ficar em /etc/gitconfig. No Windows, ele normalmente fica dentro do diretório de instalação do Git, em um caminho como C:\Program Files\Git\etc\gitconfig.

No macOS, quando o Git é instalado por meio do Homebrew, que é o método adotado neste livro, esse arquivo costuma aparecer em /opt/homebrew/etc/gitconfig. Isso acontece porque o Homebrew instala e gerencia ferramentas em diretórios próprios, separados dos diretórios padrão do sistema operacional.

Você não precisa decorar esses caminhos. Eles aparecem aqui apenas para mostrar que esse escopo realmente existe e que suas configurações ficam em um arquivo separado.

Esse tipo de configuração normalmente é definido por quem administra o computador e não costuma ser alterado com frequência no uso diário.

Escopo global (global)

O escopo global pode ser comparado às preferências da pessoa jogadora em um jogo, como o nome do perfil ou o idioma. São configurações pessoais, que se repetem independentemente do projeto.

No Git, o escopo global define configurações que se aplicam a todos os repositórios de uma mesma pessoa usuária, mas apenas no seu ambiente. Diferente do escopo local, o escopo global sempre existe para a pessoa usuária, independentemente de você estar ou não dentro de um repositório Git.

Essas configurações ficam armazenadas em um arquivo localizado no diretório pessoal da pessoa usuária, geralmente chamado .gitconfig.

Esse é o escopo mais comum para configurações pessoais, pois normalmente elas não mudam de um projeto para outro.

Escopo local (local)

O escopo local pode ser comparado às configurações salvas de um jogo específico, como a dificuldade escolhida para uma partida em andamento.

No Git, o escopo local define configurações que se aplicam somente ao repositório atual. Diferente dos outros escopos, o escopo local só existe quando você está dentro de um repositório Git. Fora de um repositório, não há escopo local para o Git consultar.

As configurações desse escopo ficam armazenadas dentro da própria pasta do projeto, no diretório oculto .git, em um arquivo de configuração exclusivo daquele repositório chamado config.

Isso permite que um projeto tenha comportamentos diferentes sem afetar outros projetos no mesmo computador.

Resumo dos escopos

Escopo

Quando existe

Para quem vale

Analogia com jogos

Onde o Git armazena

system

Sempre, enquanto o Git estiver instalado

Todas as pessoas usuárias do computador

Configurações do console ou do computador

/etc/gitconfig ou /opt/homebrew/etc/gitconfig no macOS com Homebrew

global

Sempre, enquanto o Git estiver instalado

Todos os projetos dessa pessoa

Perfil da pessoa jogadora

~/.gitconfig

local

Apenas dentro de um repositório Git

Um projeto específico

Configurações de um jogo ou partida específica

.git/config

Esses arquivos são apresentados aqui apenas para ajudar a entender como o Git organiza suas configurações internamente. Apesar disso, não é recomendado editá-los manualmente. O gerenciamento das configurações deve ser feito por meio da linha de comando, que será apresentada na próxima seção.

Ordem de prioridade dos escopos

Agora que você já sabe quando cada escopo existe, fica mais fácil entender como o Git decide qual configuração utilizar.

A regra central é a seguinte:

O Git sempre utiliza a configuração mais específica disponível no contexto atual.

Os escopos possuem níveis diferentes de especificidade. O escopo system é o mais amplo e menos específico. O escopo global é mais específico que o system. O escopo local é o mais específico de todos.

Por isso, a ordem de prioridade entre eles é:

Essa ordem não muda. O que muda é quais escopos estão disponíveis, dependendo de onde o comando do Git é executado.

Como o Git lê as configurações

Sempre que o Git precisa de uma configuração, ele segue um fluxo de leitura bem definido.

Quando você está dentro de um repositório Git, o Git faz o seguinte:

  1. Primeiro, procura a configuração no escopo local daquele repositório.

  2. Se não encontrar, procura no escopo global da pessoa usuária.

  3. Se ainda assim não encontrar, utiliza o valor definido no escopo system.

Quando você está fora de qualquer repositório Git, o escopo local não existe. Nesse caso, o Git começa a busca pelo escopo global. Se não encontrar a configuração ali, utiliza o valor definido no escopo system.

Em ambos os casos, assim que o Git encontra um valor, a busca é encerrada. Os escopos mais amplos não são mais considerados.

Exemplos para fixar

Exemplo 1

Imagine que a configuração user.name esteja definida assim:

  • system: user.name = Maria Joaquinha Medeiros Santos

  • global: user.name = Maria Santos

Dentro de um repositório que não possui configuração local, o Git utilizará o valor do escopo global:

Se, nesse mesmo computador, um repositório específico tiver a seguinte configuração local:

  • local: user.name = Maria

Ao executar comandos dentro desse repositório, o Git utilizará:

Fora de qualquer repositório Git, o escopo local não é considerado, e o Git utilizará novamente:

Exemplo 2

Agora imagine que a configuração user.email esteja definida apenas nos escopos system e global:

Nesse caso, tanto dentro quanto fora de um repositório, o Git utilizará o valor do escopo global:

Isso acontece porque o escopo global é o mais específico disponível.

Exemplo 3

Por fim, imagine uma configuração que exista apenas no escopo system:

  • system: configuração definida

  • global: não definida

  • local: não definida

Nesse cenário, independentemente de você estar dentro ou fora de um repositório, o Git utilizará o valor do escopo system, pois ele é o único disponível.

Resumo do fluxo

Sempre que o Git precisa de uma configuração, o fluxo de leitura é o mesmo:

  1. procura no escopo local, se existir

  2. se não encontrar, procura no escopo global

  3. se não encontrar, procura no escopo system

O Git sempre utiliza o primeiro valor encontrado, que corresponde à configuração mais específica disponível no contexto atual.

Entender essa ordem de leitura ajuda a explicar por que uma configuração pode parecer não funcionar ou ser “ignorada”. Na maioria das vezes, ela está apenas sendo sobrescrita por outra definida em um escopo mais específico.

Na próxima seção, vamos aprender a usar o comando git config na prática. Veremos como criar, alterar e consultar configurações do Git, aplicando conscientemente os escopos que vimos aqui para personalizar o comportamento da ferramenta de forma segura e controlada.


Na próxima seção, vamos aprender a usar o comando git config na prática. Veremos como criar, alterar e consultar configurações do Git, aplicando os escopos que vimos aqui para personalizar o comportamento da ferramenta de forma segura e controlada.

Atualizado

Isto foi útil?