年終了,突然關(guān)注到自己github上contributions的那張圖,發(fā)現(xiàn)沒幾個(gè)綠點(diǎn)。感覺有點(diǎn)不對勁,才發(fā)現(xiàn)由于今年換了工作,用的是公司郵箱創(chuàng)建的ssh key,所以commit提交并不能與個(gè)人github上的郵箱匹配~經(jīng)過一番猛如虎的操作,把commit中的公司郵箱地址換成個(gè)人github的郵箱地址,終fix!看著contributions圖,想著明年要點(diǎn)亮多少格子的時(shí)候,又發(fā)現(xiàn)一個(gè)問題:公司gitlab和個(gè)人github會(huì)發(fā)生ssh key沖突。
由于郵箱是識別的唯一手段,那么自然的,這兩者采用同一個(gè)郵箱,生成的 public key 也會(huì)是同一個(gè),上傳到 Github 或者 Gitlab 上面,在 Git 的配置中 ,設(shè)置好 Global 的配置 :git config –global user.name ‘EricYin’ && git config –global user.email ‘layupbolon@sina.com’ 進(jìn)行日常的開發(fā)是沒有問題的。
實(shí)際生活中采用同一個(gè)郵箱的可能性并不是太大,這就引出了方案二。
所謂的方案二,原理上就是對 SSH 協(xié)議配置 config 文件,對不同的域名采用不同的認(rèn)證密鑰。
# 全局配置,Github倉庫中默認(rèn)使用此配置git config --global user.name 'layupbolon' && git config --global user.email 'layupbolon@sina.com' # 團(tuán)隊(duì)項(xiàng)目配置,每次新創(chuàng)建一個(gè)項(xiàng)目,需要執(zhí)行下git config --local user.name 'EricYin' && git config --local user.email 'xxxxxx@xxxx.com'
ssh key 默認(rèn)生成后保存在 ~/.ssh/目錄下 ,默認(rèn)為 id_rsa 和 id_rsa.pub 兩個(gè)文件,由于我們需要分開配置,所以這么做:
# 生成公鑰、密鑰的同時(shí)指定文件名,Gitlab使用ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "xxxxxx@xxxx.com"# 生成默認(rèn),Github使用ssh-keygen -t rsa -C "layupbolon@sina.com"
在執(zhí)行完以上命令后會(huì)生成如下幾個(gè)文件
在 ~/.ssh目錄下,如果不存在,則新建 touch ~/.ssh/config文件 ,文件內(nèi)容添加如下:
Host git@*.corp.xxx.comHostName http://*.corp.xxx.comIdentityFile ~/.ssh/id_rsa.gitlabUser EricYinHost git@github.comHostName https://github.comIdentityFile ~/.ssh/id_rsaUser layupbolon
以gitlab為例:
登錄gitlab
打開profile setting中的ssh keys
在上圖位置填入~/.ssh/id_rsa.gitlab.pub中的內(nèi)容
看到這些 Welcome 信息,說明就是 OK的了。
建議在clone項(xiàng)目的時(shí)候使用ssh方式,如果使用git工具的話,例如sourceTree等,可以在項(xiàng)目上切換ssh,或者切換remote,以上!