相信很多開發者都會遇到在自己的電腦上使用不止乙個git帳號的情況。乙個一般是自己的github帳號,另乙個則是公司的git帳號,比如gitlab、bitbucket等。如果採用https方式通訊,那麼git帳號間不會有衝突,但你在每次pull、push的時候都要輸入帳號密碼,十分繁瑣。而且當**庫達到十分龐大的規模時,如果仍然採用https方式,在git pull時可能出現超時不響應的情況,此時只能採用ssh方式。ssh在配置完ssh key後使用起來很方便,但是git帳號間可能出現衝突,這時候該如何解決呢?
配置ssh key的方式此處不再贅述,假設.ssh資料夾下有id_rsa、id_rsa.pub、didi_id_rsa、didi_id_rsa.pub,分別對應個人github帳號私鑰公鑰以及公司git帳號私鑰公鑰。如果不進行設定,使用github賬號時沒有問題,但是使用公司賬號時,由於預設情況下私鑰存放在id_rsa檔案中,因此git仍會嘗試用id_rsa中而不是didi_id_rsa中的私鑰去與伺服器上新增的公鑰進行比對,自然而然會報錯。通常這種情況下git會讓你輸入密碼,筆者連續三次輸入密碼錯誤(其實根本不知道該密碼為何物),報錯,permission denied。
網路上的解決方案普遍為在ssh的配置檔案中加入以下字段:
host github.com
hostname github.com
user boy-a
identityfile /user//.ssh/id_rsa
host git.xiaojukeji.com
hostname git.xiaojukeji.com
user boy-b
identityfile /user//.ssh/didi_id_rsa
1.取消global
git config --global --unset user.name
git config --global --unset user.email
2.設定每個專案repo的自己的user.email
git config user.email "***[email protected]"
git config user.name "ddfe"
如此,各個git帳號間就可以「井水不犯河水」了。
但是,最麻煩的地方其實並不在這裡,而是這個配置檔案究竟位於何處。根據網友的分享,window系統中,該配置資訊存放在名為config的檔案中,位置在~/.ssh/目錄下,而在linux/unix系統中配置資訊則儲存在ssh_config檔案中,至於位置,眾說紛紜。筆者使用的是macos系統,嘗試用「ssh -vt [email protected]」去檢視ssh連線主機的debug資訊,終於發現了頭緒,debug資訊的第二行如下:
debug1: reading configuration data /etc/ssh/ssh_config
終於找到了檔案的位置!修改之,大功告成!
使用命令「ssh -vt git@***.com」檢視ssh_config檔案的位置
進入ssh_config檔案,配置各個git帳號的user以及identityfile
在各個專案中配置好user.name以及user.email
在各個git帳號間盡情穿梭吧~
如何在兩個Google 帳號間搬移雲端硬碟資料?
google drive 是很多人依賴的雲端空間,甚至會多開乙個帳號來使用,如果要在兩個帳號間移動google drive 的資料該怎麼做?尤其是這兩天的新聞說google 要收回教育帳號的無上限容量服務,相信很多人要開始把檔案從教育帳號中搬出來了。以下的方法中,原本擁有檔案的google 帳號暫且...
如何在兩個Google 帳號間搬移雲端硬碟資料?
google drive 是很多人依賴的雲端空間,甚至會多開乙個帳號來使用,如果要在兩個帳號間移動google drive 的資料該怎麼做?尤其是這兩天的新聞說google 要收回教育帳號的無上限容量服務,相信很多人要開始把檔案從教育帳號中搬出來了。以下的方法中,原本擁有檔案的google 帳號暫且...
如何在兩個Google帳號間搬移雲端硬碟資料?
google drive 是很多人依賴的雲端空間,甚至會多開乙個帳號來使用,如果要在兩個帳號間移動google drive 的資料該怎麼做?尤其是這兩天的新聞說google 要收回教育帳號的無上限容量服務,相信很多人要開始把檔案從教育帳號中搬出來了。以下的方法中,原本擁有檔案的google 帳號暫且...