Git Switch Account in Local Repository
For past few months I’m pretty occupied to rebrand my personal page. Back to code again, learning new libraries, and etc. Until then I face this (title) issue, and find a fit answer is tricky. So, I decided to write it down in here after figure it out and it makes me easy to look back whenever I need 😁.
Let’s jump in the thang!
Prerequisite
To control remote repository you need to set SSH Key to your Git Account. However it’s gonna need different SSH Key for different account. So, we need to create new SSH for new account and the old SSH will remain for old account.
- Open Terminal and go to
~/.ssh
folder to generate new SSH by typingssh-keygen
and will show
Generating public/private rsa key pair.
$ Enter file in which to save the key (/user/home/.ssh/id_rsa):<insert ssh keygen name>
Don’t press Enter
and insert your SSH Key name. If you press Enter
then your SSH Key name will set default name as id_rsa
which is might be already used as the old SSH Key name and the value will be replaced. To check on if your new SSH Key is generated type ls
, will show like this
2. Copy new SSH Key to Git Account, by opening file .pub
file inside /.ssh
folder.
And put it in the key area, depends on remote Git providers. In my case, I’m using GitLab.
Setup SSH config
Now create config
file inside /.ssh
folder using this touch
command and open to edit using nano
or vim
.
$ touch config
$ nano config
or
$ vim config
Inside config
file insert this following command. In this case I’m using GitLab for Git providers, and it’s changeable depends on Git providers you use.
# default account
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa# work account-1
Host gitlab.com-work1
HostName gitlab.com
User git
IdentityFile ~/.ssh/ssh_work1
Accessing remote repository
Go to your local repository on your computer to start access your remote repository. Type in git init
if your local repository not setup yet. When using your new GitLab account, you may want it to have different email and different name as contributor such as using work email address. All we need to do is define new name or new email locally just for particular repository and type in these command
$ git config user.email "your work/new email"
$ git config user.name "your name/alias"
Now that email and name will only work on your chosen local repository. And whenever you push
an update in that project, it’ll show that (new) information. Time to clone or access remote repository using this command
$ git remote add origin git@gitlab.com-work1:repo-group/repo-name.git
or
$ git clone git@gitlab.com-work1:repo-group/repo-name.git
Host URL need to adjust as same as written in the ~/.ssh/config
as you can see. If you already clone or add a remote repository, you can change Host URL in .git/config
inside your local repository. You can also edit name or email for this local repository.
This config
only works for particular local repository as you chosen. Calling it in your global config
won’t show this information, unless you declare it globally.
All set and you good to go! Your private project Git information will not interfered with your work or other project 😎