Mémo Git · Synchroniser
Avoir une identité par dossier
git config --global includeIf."gitdir:~/dev/pro/".path ~/.gitconfig-pro
Une règle includeIf "gitdir:…" de ~/.gitconfig applique un fichier de configuration à tous les dépôts d'un dossier. Tu peux ainsi commiter avec ton e-mail professionnel dans ~/dev/pro/ et ton e-mail personnel ailleurs, sans rien régler dépôt par dépôt.
Ce que ça fait
Une règle includeIf applique un fichier de configuration à tous les dépôts d'un dossier : même e-mail de commit et même clé SSH (core.sshCommand) sans rien régler dépôt par dépôt. Pour Merathon comme pour git en ligne de commande, le réglage propre à un dépôt passe avant la règle.
Un cas d'usage
Sur ton poste pro, ~/dev/pro/ utilise ton compte GitLab, ~/dev/client/ une instance auto-hébergée et ~/dev/perso/ GitHub, chacun avec son e-mail et sa clé.
Attention : Si [user] est écrit après une règle includeIf dans ~/.gitconfig, il passe avant le profil : l'alerte le signale. Une copie de ~/.gitconfig est gardée dans ~/.gitconfig.merathon-original et ~/.gitconfig.merathon-backup.
En ligne de commande
git config --global includeIf."gitdir:~/dev/pro/".path ~/.gitconfig-pro- Applique
~/.gitconfig-proà tous les dépôts de~/dev/pro/. git config --file ~/.gitconfig-pro user.email moi@exemple.fr- Définit l'e-mail des commits de ce dossier.
git config --file ~/.gitconfig-pro core.sshCommand "ssh -i ~/.ssh/id_pro -o IdentitiesOnly=yes"- Utilise une clé SSH précise pour ce dossier.
git config --show-origin user.email- Dans un dépôt : l'e-mail utilisé, et le fichier qui le définit.
Dans Merathon
- Préférences → « Profils Git » → « Nouveau profil ».
- Choisis le dossier, le nom et l'e-mail des commits, puis le compte et la clé SSH (existante, ou à créer).
- Si le dépôt ouvert signe avec un autre e-mail que son profil, une alerte apparaît au-dessus du résumé du commit ; « Utiliser le profil » retire le réglage propre au dépôt.
- En HTTPS, le token reste choisi d'après l'instance du remote, et non d'après le dossier.
Questions fréquentes
Pourquoi ma règle includeIf ne s'applique-t-elle pas ?
Le chemin doit se terminer par / pour couvrir tout le dossier, et la commande doit être lancée dans un dépôt de ce dossier. Vérifie aussi qu'aucun [user] n'est écrit après la règle dans ~/.gitconfig, ni dans le dépôt lui-même.
Quel réglage l'emporte ?
Le réglage propre au dépôt passe avant le reste. Dans ~/.gitconfig, pour une même clé, c'est la dernière valeur lue qui compte : un [user] placé après la règle l'emporte sur le profil.
Le profil choisit-il aussi mon token HTTPS ?
Non, pas dans Merathon : la clé SSH suit le dossier, mais le token reste choisi d'après l'instance du remote.