[技術筆記]在多個git帳號中,依照對接平台自動切換

區分工作用的git帳號和自己的git帳號

Posted by 李定宇 on Tuesday, May 30, 2023

在多個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-初稿