如何配置多個 git ssh keys 並依照專案動態切換 git config

如何配置多個 git ssh keys 並依照專案動態切換 git config

目錄

我有時候會在公司的電腦開發自己的專案,也會在家裡的電腦開發公司的專案,這時候就會遇到一個問題,就是公司的 Git 用的是公司的帳號,而自己的專案用的是自己的帳號,這時候就需要配置多個 Git SSH Key 並依照專案設置不同的 Git Config。

以下示範如何在同一台電腦,配置多個 Git SSH Key 並期待若專案在 Personal 資料夾時使用自己的帳號,若專案在其他資料夾時使用公司的帳號。

產生 SSH Key

首先我們需要產生兩組 SSH Key,一組是公司的,一組是自己的。

ssh-keygen -f  $HOME/.ssh/id_rsa -N ""
ssh-keygen -f $HOME/.ssh/id_rsa_personal -N ""

配置 SSH Key

接著我們需要配置 SSH Key,這裡我們需要在 $HOME/.ssh/config 中配置。

Host github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa

Host self.github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_personal

配置 Git Config

接著我們需要配置 Git Config,這裡我們需要在 $HOME/.gitconfig 中配置當專案在 Personal 資料夾時使用的 Git Config。 下面的配置會讓 Git 在 $HOME/Personal/ 資料夾時使用 .gitconfig-personal 的設定。

git config --global includeif.gitdir/i:$HOME/Personal/.path=.gitconfig-personal

$HOME/.gitconfig 中配置的內容如下:

[includeIf "gitdir/i:$HOME/Personal/"]
        path = .gitconfig-personal

接著我們要在跟 .gitconfig 同一層的資料夾中新增一個 .gitconfig-personal 的檔案,這個檔案就是專案在 Personal 資料夾時使用的 Git Config。

[user]
        name = <personal-user-name>
        email = <personal-user-email>

這樣未來當我們要 clone 自己的專案時,只需要使用 self.github.com 的 Host 即可,而當我們要 clone 公司的專案時,只需要使用 github.com 的 Host 即可。 並且若專案在 Personal 資料夾時,Git 會自動使用 .gitconfig-personal 的設定。

分享 :

相關文章

如何使用 GitHub Actions 自動建立並推送 Docker Image

如何使用 GitHub Actions 自動建立並推送 Docker Image

在我們先前的文章 中,我們學習了如何使用 buildx 來建立能在多平台運行的 Docker Image。然而,這種方法仍需要手動操作。為了讓我們能在 Hugo 有新版本更新時自動建立對應的 Docker Image,我們可以利用 GitHub Actions 來實現這個目標。

閱讀更多
如何解決 git ssh key permission denied (publickey) 的錯誤

如何解決 git ssh key permission denied (publickey) 的錯誤

最近在設定 git ssh-key 時發生了 Permission denied (publickey) 的問題。雖然網路上有很多相關的解決方案,但是都沒有解決我的問題。因此在這邊紀錄一下我遇到的問題及解決方案。 已經確認 .ssh 資料夾裡面已經有 key 了,也在 GitHub 上正確設定了,在其他電腦運作都沒問題。但是在這台電腦上卻一直出現 Permission denied (publickey) 的錯誤。

閱讀更多
為什麼 clone 下來的檔案不是正確的格式?認識 Git LFS

為什麼 clone 下來的檔案不是正確的格式?認識 Git LFS

最近遇到同事 git clone 一個專案,發現 clone 下來的壓縮檔居然是文字檔案!但我們在遠端看到的是壓縮檔,為什麼會這樣呢?原來是因為專案使用了 Git LFS,所以在 clone 時,只會 clone 下來指標檔案,而不是實際的大型檔案。這篇文章就來介紹一下 Git LFS。

閱讀更多