在多個git帳號中,依照對接平台自動切換
背景
其實就是一個很簡單的初衷:希望能夠在同一個本地環境內,依照提交的Git平台的不同、自動使用不同的Git帳號。
應該蠻多人都會有這個使用場景吧?以我為例,個人的Git帳號通常是用Github,而工作的程式碼託管平台是用Bitbucket、而且有另一個公司帳號來產生Git帳號;這樣就有了一個問題:如果不是用其他開源項目如SourceTree來管理公司用的Git,還有什麼方法來不讓本地的Git帳號產生混亂?本文將從0到1紀錄解決方法的步驟。
過程
安裝git
在Mac新電腦,本身有可能沒有安裝到Git,所以要自己先測一下,直接在terminal上鍵入git --version
,如果是顯示command not found
,那就乖乖自己裝了。
筆者很習慣用Homebrew
來管理安裝到Mac上的一些工具,所以先安裝一下(也可以參考官網): 在terminal上鍵入
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
接著就可以透過Homebrew
來安裝git:
brew install git
各別創建git帳號和ssh key
先假設,個人的email為user@gmail.com
、而公司給的email為employee@company.io
,便可以各自建立git帳號而且創建不同的SSH key:
個人的SSH key製作:
ssh-keygen -t rsa -b 4096 -C user@gmail.com
可以改一下檔名,這樣方便自己區別,例如改成mine
,而命名的階段是在Enter file in which to save the key:
,可以鍵入mine
來命名該SSH key;
公司用的SSH key也是一樣:
ssh-keygen -t rsa -b 4096 -C employee@company.io
然後把輸出的SSH key 改名為company
為不同的平台寫config檔
自己個人的git帳號是想使用在github、而公司的帳號是想使用在bitbucket。首先,就是要把各別的公鑰設置到各個平台上,詳細可以參考各個官網的流程,而複製公鑰可以透過下列命令:
cat (id)_rsa.pub
以上面的例子來說,如果要複製個人的公鑰,就使用cat mine_rsa.pub
、而複製公司的公鑰就是cat company_rsa.pub
。
再設定好各別的平台ssh key後,就可以在本地新建一個config檔來依照不同的平台、使用不同的git帳號:
- 到存放 ssh key的目錄中
cd ~/.ssh
- 在裡面新增一個config檔
touch config
然後編輯config檔,可以用vim也可以用 vscode,看個人習慣。修改的內容如下:
# Github // 個人github Host github.com HostName github.com User git IdentityFile ~/.ssh/mine_com_rsa # Private GitLab instance // 私人架設 Host bitbucket.org HostName bitbucket.org User git IdentityFile ~/.ssh/company_com_rsa
這樣大致就完成了。現在可以各別clone一個專案,然後在專案下的terminal鍵入git config --list
來查看現在使用的git是個人的還是公司用的。
Ref
- GPT
ChangeLog
- 20230521-初稿