📘 Capítulo 6 – Personalizando o Git


6.1 Configurações Avançadas com git config

Além das configurações básicas de nome e e-mail, você pode ajustar o comportamento do Git com git config.

Exemplo: definir ferramenta de merge

git config --global merge.tool vimdiff

Desativar conversão automática de final de linha

git config --global core.autocrlf false

Definir o editor padrão

git config --global core.editor "code --wait"

6.2 Hooks: Automatizando o Fluxo

Git hooks são scripts executados automaticamente em determinados eventos, como antes de um commit ou após um merge.

Localização:

.git/hooks/

Exemplo: impedir commits sem mensagem

Edite .git/hooks/commit-msg:

#!/bin/sh
test -z "$(cat "$1")" && {
  echo "A mensagem de commit não pode estar vazia."
  exit 1
}

Torne o script executável:

chmod +x .git/hooks/commit-msg

⚠️ Hooks não são versionados com o repositório. Para compartilhamento, use ferramentas como Husky.


6.3 Alias Personalizados

Alias simplificam comandos frequentes:

git config --global alias.s status
git config --global alias.cm "commit -m"
git config --global alias.hist "log --oneline --graph --decorate --all"

Uso:

git s
git cm "mensagem"
git hist

6.4 Condições por Diretório (Configuração Condicional)

Você pode aplicar configurações específicas para certos diretórios de projeto:

[includeIf "gitdir:~/projetos/empresa/"]
  path = ~/.gitconfig-empresa

6.5 Subcomandos Personalizados

Se você criar um script chamado git-relatorio, poderá executá-lo como:

git relatorio

O script deve estar em um diretório incluído no PATH do sistema.


6.6 Integração com Ferramentas Externas

Você pode definir ferramentas específicas para edição, comparação ou merge.

Exemplo com Visual Studio Code:

git config --global core.editor "code --wait"
git config --global merge.tool vscode

6.7 Resumo