1. 程式人生 > >在一個電腦上設定兩個git賬戶

在一個電腦上設定兩個git賬戶

如何比較方便的在同一臺電腦上登入多個 Git 賬戶
這裡不僅限於 Github, 而是基於 Git 版本工具的任何伺服器。

背景
公司是gitLab,自己是github賬號 想在同一臺電腦上使用,兩者互不干擾。。

準備

github有兩種登入方式
一個是直接的賬戶密碼方式,另外一個是用過 SSH 證書登入。
在這裡插入圖片描述

在這裡插入圖片描述
第一種是使用賬號密碼登入,使用下面命令的時候需要輸入使用者名稱和密碼就可以了,提交程式碼的時候也需要輸入,配置簡單 但是頻繁使用的話 就比較麻煩了

git clone https://github.com/azhen1/lerna-demo.git

第二種就是這次配置兩個賬號要使用的方式
在 Github 的後臺,可以看到一個叫做 SSH and GPG keys 的選項:

在這裡插入圖片描述
這裡面列出了當前賬號繫結的 SSH Key。 每一個 key 對應一臺獨立的裝置。
繫結SSH Key的步驟如下:

  1. 檢查電腦是否已有ssh key
$ cd ~/.ssh
$ ls

在這裡插入圖片描述
預設應該是沒有的

  1. 建立一個ssh key
$ ssh-keygen -t rsa -C "[email protected]"

執行上面那條命令後會讓輸入一個檔名,用於儲存剛才生成的 SSH key 程式碼,如:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/azhen/.ssh/id_rsa): /Users/azhen/.ssh/id_rsa_user2

你可以不輸入檔名,使用預設檔名,那麼就會生成 id_rsa 和 id_rsa.pub 兩個全域性預設的祕鑰檔案,前者為私鑰,後者為公鑰。
當然我們有兩個程式碼倉庫,所以最好寫上檔名,如id_rsa(公司)或id_rsa_user2(個人). 這樣ssh目錄下會生成id_rsa.pub和id_rsa_user2.pub兩個檔案

接著又會提示你輸入兩次密碼(該密碼是你push檔案的時候要輸入的密碼,而不是github管理者的密碼)。也可以直接按回車鍵,那麼push的時候就不需要輸入密碼,直接提交到github上了,如:

Enter passphrase (empty for no passphrase): 
# Enter same passphrase again:

當你看到下面這段程式碼的時候,那就說明,SSH key 已經建立成功,只需要新增到github的SSH key上就可以了。

Your identification has been saved in /c/Users/you/.ssh/id_rsa.
# Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 70:e2:e5:25:06:6c:0b:1a:b1:73:69:18:3a:b4:f4:a2 [email protected]
  1. 新增你的 SSH key 到 github上面去
cd ~/.ssh
vi id_rsa.pub

登入你的github賬號,從右上角的設定( Settings )進入,然後點選選單欄的 SSH key 進入頁面新增 SSH key。
點選 Add SSH key 按鈕新增一個 SSH key 。把你複製的 SSH key 程式碼貼上到 key 所對應的輸入框中,記得 SSH key 程式碼的前後不要留有空格或者回車。當然,上面的 Title 所對應的輸入框你也可以輸入一個該 SSH key 顯示在 github 上的一個別名。

建立config檔案

設定好兩個ssh key之後就要配置下它們的使用場景

$ touch config

此時會出現空的config檔案,然後新增如下內容:

# Default gitLab user
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa

# second user
Host github.azhen1
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_user2

這樣,在我們建立的 config 檔案中,配置了兩條記錄。 分別指向兩個 SSH key。 HostName是原本的域名 Host是與HostName對應的自定義的名字。

引用 config 檔案中的配置項:
在專案的下載地址中,有一個 Use SSH 的連結,點選它之後,就可以得到 SSH 格式的地址:
在這裡插入圖片描述
比如我們圖中的 [email protected]:azhen1/lerna-demo.git。 我們需要對它稍作加工,把域名部分替換成我們在 config 中配置的 Host: [email protected]:azhen1/lerna-demo.git。

仔細看一下,看出前後兩者有什麼不同了吧,前面直接用的域名,而後面這個用的是我們在 ~/.ssh/config中配置的內容。 這樣在訪問的時候,系統就自動能夠找到相應的金鑰了。可以執行 git clone 命令

git clone [email protected]:azhen1/lerna-demo.git

這樣本地倉庫就和對應的金鑰建立起了聯絡。 以後的操作中,都會自動使用這個 SSH key 來訪問 Github 遠端倉庫了。 如果想同時在另外一個本地倉庫使用其他 Github 賬戶,只需要在 ~/.ssh/config檔案中配置好相應的 SSH key 和對應的 Host,就可以了。

參考
http://www.sohu.com/a/200521333_487516
https://www.cnblogs.com/xjnotxj/p/5845574.html
https://www.jianshu.com/p/6ac28fa5e843