如何配置多個 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 的設定。

相關文章

ImageMagick:圖片處理的神奇工具

ImageMagick:圖片處理的神奇工具

ImageMagick 是一款開源的圖片處理工具,提供了豐富的功能來處理圖片大小、格式和色彩等。此外,它還配備了命令列工具,方便用戶進行批次處理圖片。本篇文章將記

閱讀更多
使用 youtube-dl / yt-dlp 下載 Youtube 最佳畫質與音質的影片

使用 youtube-dl / yt-dlp 下載 Youtube 最佳畫質與音質的影片

youtube-dl 是一個開源可以下載 Youtube 影片的工具,然而由於版權問題,導致專案被刪除,有神人將專案 fork 出來,並且繼續維護,所以改用 yt-dlp 來取代。 youtube-dl / yt-dlp 不只可以下載 Youtube

閱讀更多
如何快速建置 Node.js 專案並使用 TypeScript 與 Visual Studio Code 進行開發

如何快速建置 Node.js 專案並使用 TypeScript 與 Visual Studio Code 進行開發

安裝 .NET CLI on Windows with Chocolatey choco install dotnetcore-sdk -y on macOS with Homebrew brew install dotnet-sdk on Ubuntu sudo apt-get install dotnet-sdk -y 使用 Will 保哥 的專案範本建立一個新的 TypeScript 專案 安裝專案範本 dotnet new --install Duotify.Templates.DotNetNew 建立新的 TypeScript 專案 mkdir <project-folder> && cd <project-folder> dotnet new tsnode

閱讀更多