Introduzione
Prima del primo commit, Git deve sapere chi sei. git config memorizza coppie chiave-valore in tre ambiti: system (tutti gli utenti), global (il tuo account utente) e local (un singolo repository). L'ambito globale risiede in ~/.gitconfig su Unix e %USERPROFILE%\.gitconfig su Windows.
Identità
Imposta nome ed email; vengono incorporati in ogni commit:
git config --global user.name "Ada Lovelace"
git config --global user.email "[email protected]"
Editor e pager
Git lancia il tuo editor per i messaggi di commit e i rebase interattivi. Scegline uno da cui sai uscire:
git config --global core.editor "nano"
# oppure
git config --global core.editor "code --wait"
# oppure
git config --global core.editor "vim"
Nome del branch predefinito
Da Git 2.28 puoi impostare il branch predefinito per i nuovi repository:
git config --global init.defaultBranch main
Terminatori di riga
Per evitare sorprese CRLF/LF in team multi-piattaforma:
# Linux, macOS
git config --global core.autocrlf input
# Windows
git config --global core.autocrlf true
Alias utili
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph --decorate --all"
Ora git lg dà un grafico compatto di tutti i branch.
Ispezionare la configurazione
Elenca tutta la configurazione con i file di origine, utile per debuggare sorprese:
git config --list --show-origin
git config --get user.email
Comportamento di pull
Da Git 2.27 il comportamento predefinito di pull richiede una scelta esplicita. Scegline una:
git config --global pull.rebase false # merge (predefinito)
git config --global pull.rebase true # rebase
git config --global pull.ff only # solo fast-forward
Inclusioni condizionali
Git supporta la configurazione per directory tramite includeIf. È il modo più pulito per tenere separate le identità lavoro e personale senza ricordarsi di impostare la configurazione locale in ogni clone:
# in ~/.gitconfig
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
# in ~/.gitconfig-work
[user]
email = [email protected]
signingkey = ssh-ed25519 AAAA...
Qualsiasi repository clonato sotto ~/work/ raccoglie automaticamente l'identità di lavoro. Combina con le inclusioni onbranch: per limitare le impostazioni a branch specifici.
Override per repository
La configurazione locale in .git/config sovrascrive il file globale. È il posto giusto per identità, hook e chiavi di firma specifiche del progetto. Per controllare da quale ambito proviene un'impostazione:
git config --show-origin --get user.email
git config --show-scope --get-all credential.helper
Se un valore sembra sbagliato, --show-origin ti dice esattamente quale file lo possiede. Attenzione: ognuno degli ambiti system, global, local o anche worktree può oscurare un altro. git config --list --show-origin mostra il quadro completo in un colpo solo.
Errori comuni
Impostare user.email a un indirizzo personale mentre si fa commit per lavoro, esponendolo su piattaforme di hosting pubbliche. Usa l'ambito local all'interno dei repository di lavoro per sovrascrivere il valore globale: git config user.email "[email protected]". Un altro classico: modificare ~/.gitconfig a mano e introdurre un errore di sintassi che rompe ogni comando Git. Usa git config per scrivere i valori, e git config --list per verificare dopo ogni modifica.