Abraçar mudanças (II)
Tags: git, development, desenvolvimento
Published: 2020-12-19 14:18:51

Este é o segundo artigo de uma série sobre [Git](https://www.git-scm.com). É um assunto extenso que será dividido em: 

[I - Controle de versão](https://dev.to/hilam/abracar-as-mudancas-i-295i)
II - Configuração
[III - O que há por baixo dos panos](https://dev.to/hilam/abracar-as-mudancas-iii-5f7h)
[IV - Comandos mais comuns](https://dev.to/hilam/abracar-mudancas-iv-3p63)
V - Fluxo de trabalho
VI - Serviços Git na web
VII - Contribuindo com código aberto

### Configuração

O comando responsável pela configuração é o `git config`. O Git tem muitos níveis possíveis de configuração. Trataremos aqui: **no repositório, no usuário e no sistema**. 

Esses níveis são expostos por arquivos-texto que contêm as opções de configuração vigentes. As configurações que não estiverem declaradas nesses arquivos, usarão um **valor padrão**.

Uma configuração no **nível do sistema** é gravada pelo comando `git config --system`, seguido do nome da configuração e do seu valor. Esse par "nome-valor" será salvo no arquivo `/etc/gitconfig`. E necessário ter permissão de **superusuário** para configurar o Git nesse nível. 

Os valores aplicados serão usados para todos os usuários do sistema operacional. Como exemplo, abaixo o comando que utilizará o valor "main" como **nome da ramificação principal**, na criação de um repositório:

`sudo git config --system init.defaultBranch main`

A configuração no nível de usuário é gravada pelo comando `git config --global`, seguido do nome da configuração e do seu valor. Será salva no arquivo `~/.gitconfig` ou `~/.config/git/config`, a depender do sistema operacional, sendo o ~, o símbolo da pasta padrão do usuário conectado. Os valores aplicados serão usados para o usuário conectado. Exemplos comuns:

`git config --global user.name "Hildeberto"` e
`git config --global user.email "hildeberto@gmail.com"`

* usados para ajustar nome e email que serão usados para **atribuir** as modificações nos repositórios.

`git config --global alias.st 'status'`

* usado para declarar um "alias" (apelido, outra forma de se referir) para o comando "status", que a partir de então pode ser referenciado apenas como "st", ou seja um `git st` obterá o mesmo resultado que um `git status`. (falaremos sobre "alias" com mais detalhes)

A configuração no nível de repositório é gravada pelo comando `git config --local`, seguido do nome da configuração e do seu valor. Será gravado no arquivo `.git/config`, na pasta do repositório. Os valores aplicados serão usados para aquele repositório específico. Exemplo:

`git config --local user.name "Outronome"` 

* vai registrar as alterações do repositório com outro nome de usuário, que aquele definido no nível de usuário.

Para obter a configuração vigente para o repositório em que está localizado, use o comando `git config --list`.

Qualquer configuração pode ser **sobrescrita**, ajustada por um valor diferente, por uma configuração de nome igual, na seguinte ordem de precedência: repositório, usuário, sistema. 

Ou seja, o que é configurado no nível do repositório sobrescreve a mesma configuração no nível de usuário ou do sistema. 

Praticamente tudo é configurável no Git. O comando `git help --config` listará todas as opções de configuração disponíveis. Mais detalhes podem ser obtidos com o comando `git help config`.

### Referência

* Git Configuration (https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)

No [próximo artigo](https://dev.to/hilam/abracar-as-mudancas-iii-5f7h), vamos ver como é a ferramenta "por baixo dos panos".