Introduction
Avant votre premier commit, Git doit savoir qui vous êtes. git config stocke des paires clé-valeur dans trois portées : system (tous les utilisateurs), global (votre compte utilisateur) et local (un dépôt unique). La portée globale est dans ~/.gitconfig sous Unix et %USERPROFILE%\.gitconfig sous Windows.
Identité
Définissez votre nom et votre adresse e-mail ; ils sont gravés dans chaque commit que vous faites :
git config --global user.name "Ada Lovelace"
git config --global user.email "[email protected]"
Éditeur et pager
Git lance votre éditeur pour les messages de commit et les rebases interactifs. Choisissez-en un que vous savez quitter :
git config --global core.editor "nano"
# ou
git config --global core.editor "code --wait"
# ou
git config --global core.editor "vim"
Nom de la branche par défaut
Depuis Git 2.28, vous pouvez définir la branche par défaut pour les nouveaux dépôts :
git config --global init.defaultBranch main
Fins de ligne
Pour éviter les surprises CRLF/LF dans les équipes multi-plateformes :
# Linux, macOS
git config --global core.autocrlf input
# Windows
git config --global core.autocrlf true
Alias utiles
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph --decorate --all"
Maintenant git lg donne un graphe compact de toutes les branches.
Inspecter la configuration
Lister toute la configuration avec ses fichiers d'origine, utile pour déboguer les surprises :
git config --list --show-origin
git config --get user.email
Comportement de pull
Depuis Git 2.27, le comportement par défaut de pull exige un choix explicite. Choisissez-en un :
git config --global pull.rebase false # merge (par défaut)
git config --global pull.rebase true # rebase
git config --global pull.ff only # fast-forward uniquement
Inclusions conditionnelles
Git prend en charge la configuration par répertoire via includeIf. C'est la façon la plus propre de séparer les identités professionnelle et personnelle sans avoir à penser à définir une configuration locale dans chaque clone :
# dans ~/.gitconfig
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
# dans ~/.gitconfig-work
[user]
email = [email protected]
signingkey = ssh-ed25519 AAAA...
Tout dépôt cloné sous ~/work/ reprend automatiquement l'identité professionnelle. Combinez avec des inclusions onbranch: pour cibler des paramètres sur des branches spécifiques.
Surcharges par dépôt
La configuration locale dans .git/config surcharge le fichier global. C'est le bon endroit pour les identités, hooks et clés de signature spécifiques au projet. Pour auditer la portée d'où provient un paramètre :
git config --show-origin --get user.email
git config --show-scope --get-all credential.helper
Si une valeur semble fausse, --show-origin vous indique exactement quel fichier la contient. Attention : system, global, local ou même la portée worktree peuvent masquer une autre. git config --list --show-origin dresse le tableau complet en une seule commande.
Erreurs fréquentes
Définir user.email sur une adresse personnelle tout en commitant pour le travail, exposant cette adresse sur des plateformes d'hébergement publiques. Utilisez la portée locale dans les dépôts professionnels pour surcharger la valeur globale : git config user.email "[email protected]". Autre classique : éditer ~/.gitconfig à la main et introduire une erreur de syntaxe qui casse toutes les commandes Git. Utilisez git config pour écrire des valeurs, et git config --list pour vérifier après chaque changement.