create different ssh key according the article Mac Set-Up Git
$ ssh-keygen -t rsa -C "your_email@youremail.com"
Please refer to github ssh issues for common problems.
for example, 2 keys created at:
~/.ssh/id_rsa_activehacker
~/.ssh/id_rsa_jexchan
then, add these two keys as following
$ ssh-add ~/.ssh/id_rsa_activehacker
$ ssh-add ~/.ssh/id_rsa_jexchan
you can delete all cached keys before
$ ssh-add -D
finally, you can check your saved keys
$ ssh-add -l
$ cd ~/.ssh/
$ touch config
$ subl -a config
Then added
#activehacker account
Host github.com-activehacker
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_activehacker
#jexchan account
Host github.com-jexchan
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_jexchan
clone your repo git clone git@github.com:activehacker/gfs.git gfs_jexchan
cd gfs_jexchan and modify git config
$ git config user.name "jexchan"
$ git config user.email "jexchan@gmail.com"
$ git config user.name "activehacker"
$ git config user.email "jexlab@gmail.com"
or you can have global git config $ git config --global user.name "jexchan" $ git config --global user.email "jexchan@gmail.com"
then use normal flow to push your code
$ git add .
$ git commit -m "your comments"
$ git push
Another related article in Chinese
munging your
.git/configremote is just going to end up being a hassle in the long run.trust me, been there done that, never doing it again tomorrow.
the. most. portable. way is to setup your root gitconfig so that it uses the
includeif.The
includeifstanza/directive modifies your git config on the fly based on the CWD of the git operation.Relevant to this thread, this is where we can teach git about the
ssh_command, which is where you point to your shiny unique ssh key.The end result is a set of dotfiles
~/.gitconfig,~/.dotfiles/this.gitconfig,~/.dotfiles/that.gitconfigyou can carry around and a directory structure for your~/Projects~/.gitconfigPersonal Configs
~/.dotfiles/mine-gitlab.gitconfig~/.dotfiles/mine-github.gitconfigFor the above, any git operations occurring within a path that matches either:
Projects/Mine/Gitlab/Projects/Mine/GitHub/, orProjects/Experiements/Github/will use my github config.
Work Configs
~/.dotfiles/work-github-somecompany.gitconfigFor the above, any git operation occuring in a directory that matches
Projects/Work/Github/SomeCompanywill specifically use a different ssh key despite my~/.ssh/configdeclaring another for other general github ssh connections. The-o IdentitiesOnlytells ssh to use only the private key specified with the "-i" option and ignore any other keys in the SSH agent or on the remote server.The main reasons I love this setup :