Da Anonimo (non verificato) , 29 Aprile 2026

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.