/!\ Be very carrefull in your setup : any misconfiguration make all the git config to fail silently ! Go trought this guide step by step and it should be fine 😉
-
Generate your SSH keys as per your git provider documentation.
-
Add each public SSH keys to your git providers acounts.
-
In your
~/.ssh/config
, set each ssh key for each repository as in this exemple:Host github.com HostName github.com User git IdentityFile ~/.ssh/github_private_key IdentitiesOnly=yes Host gitlab.com Hostname gitlab.com User git IdentityFile ~/.ssh/gitlab_private_key IdentitiesOnly=yes
/!\ Require git 2.13+ for conditional include support.
The idea here is to use a different git user name & email depending on the folder you are in.
-
In your
~/.gitconfig
, remove the[user]
block and add the following (adapt this exemple to your needs) :[includeIf "gitdir:~/code/personal/"] path = .gitconfig-personal [includeIf "gitdir:~/code/professional/"] path = .gitconfig-professional
-
In your
~/.gitconfig-personal
, add your personnal user informations:[user] email = [email protected] # note we use the noreply github mail name = personal_username
-
In your
~/.gitconfig-professional
, add your professional user informations:[user] email = [email protected] name = professional_username
If you need to add a GPG key and bind it to a user to sign your commits, you can do so like this:
You should have GPG installed and configured like the GPG suite
-
Add the GPG key ID to your
~/.gitconfig-<PROFILE>
config and enable commit signing:[user] email = [email protected] name = Your NAME signingkey = SIGNING_KEY_ID [commit] gpgsign = true
-
Make sure to register the right GPG binary in your
~/.gitconfig
:[program] pgp = /path/to/your/gpg2/bin
-
Now each repository will use the custom user info setup depending on the top-level folder.
-
Check your settings are taken into account, for instance in
~/code/personal/
:$ cd ~/code/personal/ $ git config --get user.email # should return [email protected] as per the exemple $ git config --get user.name # should return personal_username as per the exemple $ git config --get user.signingkey # should return the GPG key ID as configured for the user
-
Do the same for each folder you have setup.
-
You can also display and check the global git config:
git config --list --global
- Or just the local config for the repository folder you are in:
git config --list
- Or just the local config for the repository folder you are in:
-
Done !
- use
git config
commands instead of config file manual editions (editing config directly is kind of dangerous but is more understandable, maybe keep it like this ?)