由於公司團隊使用 gitlab 來託管**,同時,個人在 github 上還有一些**倉庫,可公司郵箱與個人郵箱是不同的,由此產生的 ssh key 也是不同的,這就造成了衝突 ,如何在一台機器上面同時使用 github 與 gitlab 的服務?
如果採用ssh
協議或者git 協議
通過終端命令對遠端倉庫進行push
操作的時候,大概的過程如下:(前提在 github 上已經配置的本機的 ssh public key)
無論使用哪種**託管服務商,對於 git 而言,郵箱
是識別使用者的唯一手段,所以對於不同的服務商,由於郵箱不同,那麼通過郵件名建立的 ssh key 自然是不同的,這時候在不同的服務商之間進行push
命令的時候,git 是不知道使用哪個 ssh key ,自然導致push
的失敗。場景如下:
由於郵箱
是識別的唯一手段,那麼自然的,這兩者採用同乙個郵箱,生成的 public key 也會是同乙個,上傳到 github 或者 gitlab 上面,在 git 的配置中 ,設定好 global 的配置 :git config --global user.name 'voluee' && git config --global user.email 'personal@***.com'
進行日常的開發是沒有問題的。
實際生活中採用同乙個郵箱的可能性並不是太大,這就引出了方案二
所謂的方案二,原理上就是對 ssh 協議配置 config 檔案,對不同的網域名稱採用不同的認證金鑰。
git config 介紹
git有乙個工具被稱為git config,它允許你獲得和設定配置變數;這些變數可以控制git的外觀和操作的各個方面。這些變數可以被儲存在三個不同的位置:
配置流程
1. 配置 git 使用者名稱、郵箱
2.生成 ssh key 上傳到 github/gitlab# 全域性配置,github倉庫中預設使用此配置
git config --global user.name "voluee"
&&git config --global user.email "personal@***.com"
# 團隊專案配置,每次新建立乙個專案,需要執行下
git config --local user.name "voluee"
&&git config --local user.email "company@***.com"
ssh key 預設生成後儲存在 ~/.ssh/目錄下 ,分別為gitlab_id_rsa和github_id_rsa兩個檔案,由於我們需要分開配置,所以這麼做:
命令執行完成後,這時#建立gitlab的ssh-key
ssh-keygen -t rsa -
c"company@***.com"
-f ~
/.ssh/gitlab_id_rsa
#建立github的ssh-key
ssh-keygen -t rsa -
c"personal@***.com"
-f ~
/.ssh/github_id_rsa
~/.ssh
目錄下會多出gitlab_id_rsa
和github_id_rsa
四個檔案,***.pub
裡儲存的就是我們要使用的key,這個key就是用來上傳到gitlab和github上的。
3.配置 config 檔案
在~/.ssh
目錄下,如果不存在,則新建touch ~/.ssh/config
檔案 ,檔案內容新增如下:
4.上傳public key 到 github/gitlab#gitlab
host [這裡填gitlab真實位址,就是clone的字首]
hostname [這裡填gitlab真實位址]
preferredauthentications publickey
identityfile ~/.ssh/gitlab_id_rsa
#github
host github
hostname github.com
preferredauthentications publickey
identityfile ~/.ssh/github_id_rsa
以github為例,過程如下:
5.驗證是否ok
由於每個託管商的倉庫都有唯一的字尾,比如 github的是git@github.com:*
,所以可以這樣測試:
看到這些ssh -t git@github.com
hi ciqing! you've successfully authenticated, but github does not provide shell access.
ssh -t git@[這裡填gitlab真實位址,就是clone的字首]
welcome to gitlab, voluee!
welcome
資訊,說明就是ok的了
git config --list
git config --system --list
git config --global --list
git config --local --list
cmd,git_bash不走**,所以得配置,前提是你有vpn已經**了指定埠
同時使用GitHub和GitLab
由於公司團隊使用 gitlab 來託管 同時,個人在 github 上還有一些 倉庫,可公司郵箱與個人郵箱是不同的,由此產生的 ssh key 也是不同的,這就造成了衝突 如何在一台機器上面同時使用 github 與 gitlab 的服務?問題產生場景 無密碼與遠端伺服器互動的秘密 ssh 如果採用...
同時使用 GitHub 和 GitLab
先說一下寫這篇部落格的緣由,之前自己開發專案的時候都是用 github 來託管 但是實習之後由於公司專案隱私問題,給分配了 gitlab 的使用者名稱和郵箱,當時我就直接在電腦上把使用者名稱和密碼進行了全域性配置,自那以後我在實習之餘做自己的專案時,每次往 github 上提交 都沒有我的 cont...
GitHub和gitlab同時使用
首先先本地申請秘鑰對,為了方便申請在同一目錄下。注意一路enter就行。ssh keygen t rsa c 1112346 qq.com f ssh gitlab id rsa ssh keygen t rsa c 1112346 qq.com f ssh github id rsa然後在各自的 ...