同一臺電腦上我的的github帳戶如何與公司的gitlab帳戶共存

前些天,寫了篇博客 開發環境之git:團隊協做git工做流與經常使用命令
主要是回顧其中的第一小節基本配置。
可是對於不少程序員而言,咱們不只有公司的gitlab帳戶作公司的業務,也會有本身我的的github帳戶整理本身的學習代碼,如何在同一臺電腦上讓這兩個帳戶共存?git

一. 先來看看你可能想到的方式:

1.1 直接把以前生成的 ~/.ssh/id_rsa.pub 文件用相似的方式添加到github網站上。程序員

右上角點擊頭像 --> 點擊settings --> 點擊 SSH and GPG keys --> 點擊 New SSH key --> 粘貼 id_rsa.pub

當你發現你用ssh的方式拉取github倉庫的時候github

git clone git@github.com:用戶名/倉庫名.git

會提示shell

Cloning into '倉庫名'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

想一想也是,仔細看id_rsa.pub文件 後面跟的是公司郵箱的地址,而你的github帳戶是你本身私人郵箱的地址,兩個服務器明顯都不在一塊兒,鑑權和驗證都是分開的。這種方式是不行的。服務器


1.2. 無論了,那直接用https的方式總能夠吧,能夠是能夠,可是https的弊端大部分人也都清楚,每次推送代碼都須要輸入你的github帳戶名和密碼了,這樣很煩ssh


1.3. 從新設置下ide

git config --global user.name "github用戶名"
 git config --global user.email "github郵箱"

這樣貌似可行?(沒親自試過),但有可能正在本身的github項目中練手,忽然公司項目來了個新bug,你就又要從新設置成公司的用戶名郵箱什麼的,常常須要這樣來回切就有點煩gitlab

2、一勞永逸的方式

以前公司的gitlab帳戶的ssh key 是正常的,那就先無論他了,其實咱們要作的就只是再去生成一個新的ssh key 添加到 github帳戶上而已。學習

2.1. 生成一個github的ssh key測試

ssh-keygen -t rsa -C "你的github郵箱" -f ~/.ssh/github_rsa

2.2. 輸入上面的命令後一路回車,而後到 ~/.ssh 目錄下去找,會發現多了兩個文件 github_rsa 和 github_rsa.pub。 把github_rsa.pub 按照 1.1 的方式添加到github中去

2.3 在~/.ssh/目錄下建立一個config文件,分別配置公司gitlab的ssh key 和 本身我的的 ssh key

Host gitlab
    HostName 公司的代碼倉庫服務器地址
    User gitlab用戶名
    IdentityFile ~/.ssh/id_rsa
Host github.com
    HostName github.com
    User github用戶名
    IdentityFile ~/.ssh/github_rsa

其實這裏的User並不會有咱們預期的效果,好比你在公司的gitlab用戶名通常會取實名的名字,而github是一個隨意的暱稱。這裏並不會讓你之後推送代碼到gitlab時取 你在這裏配置的 gitlab用戶名,一樣也不會推送到github時取你在這裏配置的 github用戶名。由於這個其實只是針對ssh key的配置的User,並不會影響你以前經過 git config --global user.name "公司gitlab用戶名" 設置的git帳戶名

2.4 至此,能夠分別測試一下了你的ssh 是否能連通了

ssh -T git@gitlab
ssh -T git@github.com

若是出現相似這樣的字段就代表你的ssh key能夠用了

Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.

2.5 強迫症的福音

前面2.3中提到 ~/.ssh/config 文件中的User 並不等同於咱們的git帳戶名。
有可能你以前設置過

git config --global user.name "公司gitlab實名"

而後你發現你傳代碼到github的時候,也是顯示的這個實名,讓你以爲有點不爽。
你能夠繼續到你本地的github倉庫項目文件夾下去設置一個本地的用戶名

git config --local user.name "github用戶名"

再推送,就能夠顯示對應的用戶名了。

這裏何時用global 何時用local 其實取決於你本身用哪一個帳戶用得多一點,好比你在公司的電腦上,你就能夠把公司的gitlab用戶名加 --global 配置,而本身我的的github加 --local。若是你是在你本身家裏的電腦上,就能夠是相反的操做了。

相關文章
相關標籤/搜索