配置多 Git Remote 倉庫的 SSH ,Git 使用者和郵箱自動切換

語言: CN / TW / HK

theme: cyanosis

開啟掘金成長之旅!這是我參與「掘金日新計劃 · 2 月更文挑戰」的第 7 天,點選檢視活動詳情

在開發中,我們經常需要同時使用多個 Git 遠端倉庫來管理程式碼,這些倉庫可能 Github 倉庫以及 Gitee 的倉庫。在這些倉庫中,為了保障程式碼的安全性和可追溯性,我們通常使用 SSH 協議來進行認證。

本文將介紹如何配置多個 Git 遠端倉庫的 SSH 認證,並根據檔案路徑自動選擇相應的 Git 使用者和 Git 郵箱。

配置 SSH Key

在新增遠端倉庫時,我們可以使用 SSH 協議來進行連線。

  1. 生成 SSH 金鑰

我們可以使用 ssh-keygen 命令生成 SSH 金鑰,如果已經生成過 SSH 金鑰,可以跳過這一步。

shell ssh-keygen -t rsa -b 4096 -C "[email protected]"

  1. 將 SSH 公鑰新增到遠端倉庫

在新增遠端倉庫時,我們可以將生成的 SSH 公鑰新增到遠端倉庫的設定中,這樣就可以使用 SSH 協議連線遠端倉庫。具體方法可以 Github 或 Gitlab 這類的文件。

  1. 配置 SSH

我們需要在本地配置 SSH,以便 Git 可以使用 SSH 協議連線遠端倉庫。可以通過編輯 ~/.ssh/config 檔案來配置 SSH。

下面是一個示例配置:

```shell

GitHub

Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_github

Gitee

Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_gitee ```

上面的配置中,我們為 GitHub 和 Gitee 配置了 SSH。其中,Host 是我們為遠端倉庫指定的別名,HostName 是遠端倉庫的地址,IdentityFile 是 SSH 金鑰的路徑。

4.用 ssh 命令分別測試連通性。

ssh ssh -T [email protected] ssh -T [email protected]

配置 Git

接下來,我們需要為每個 Git 倉庫配置 Git 使用者和 Git 郵箱。我們可以使用以下命令來配置 Git 使用者和 Git 郵箱:

bash git config --global user.name "Brian" git config --global user.email "[email protected]"

這些命令將全域性設定 Git 使用者和 Git 郵箱,如果我們需要為特定的 Git 倉庫設定不同的 Git 使用者和 Git 郵箱,可以使用以下命令:

```bash

/path/to/repository 為倉庫路徑

cd /path/to/repository git config user.name "Brian Yao" git config user.email "[email protected]" ```

配置 Git 遠端倉庫

現在,我們已經為每個 Git 倉庫配置了 SSH Key、Git 使用者和 Git 郵箱。接下來,我們需要為每個 Git 倉庫配置遠端倉庫的地址和名稱。我們可以使用以下命令來新增遠端倉庫:

```bash

/path/to/repository 為倉庫路徑

cd /path/to/repository git remote add origin [email protected]:username/repo.git ```

其中,origin 是遠端倉庫的名稱,[email protected]:username/repo.git 是遠端倉庫的 SSH 地址。


自動選擇 Git 使用者和 Git 郵箱

在我們使用多個 Git 遠端倉庫時,通常需要使用不同的 Git 使用者和 Git 郵箱來進行程式碼提交。為了方便起見,我們可以根據檔案路徑來自動選擇相應的 Git 使用者和 Git 郵箱。

假設我們將 Github 專案放在 github 資料夾下,將 Gitee 專案放在 gitee 資料夾下。我們可以使用以下方式來自動選擇相應的 Git 使用者和 Git 郵箱:

使用 includeIf 功能,我們可以在 ~/.gitconfig 檔案中為不同的資料夾路徑配置不同的 Git 使用者和 Git 郵箱。例如,我們可以新增以下配置:

```ssh [user] name = Brian email = [email protected]

[includeIf "gitdir:~/github/"] path = ~/.gitconfig-github

[includeIf "gitdir:~/gitee/"] path = ~/.gitconfig-gitee ```

其中,[user] 部分是全域性的 Git 使用者和 Git 郵箱配置,[includeIf] 部分用於針對不同的資料夾路徑進行 Git 使用者和 Git 郵箱配置。在上述例子中,~/.gitconfig-github~/.gitconfig-gitee 檔案中分別包含了 Github 和 Gitee 專案的 Git 使用者和 Git 郵箱配置。

~/.gitconfig-github 中,我們可以新增以下配置:

ssh [user] name = Brian email = [email protected]

這將覆蓋全域性的 Git 使用者和 Git 郵箱配置,並將 Github 專案的程式碼提交到指定的 Git 使用者和 Git 郵箱。

~/.gitconfig-gitee 中,我們可以新增以下配置:

ssh [user] name = Brian email = [email protected]

這將覆蓋全域性的 Git 使用者和 Git 郵箱配置,並將 Gitee 專案的程式碼提交到指定的 Git 使用者和 Git 郵箱。

通過使用 includeIf 功能,我們可以將不同的 Git 使用者和 Git 郵箱配置分離到不同的配置檔案中,從而提高配置的可維護性和可擴充套件性。並且使用 includeIf 功能的方式更加輕量級,不會對 Git 的效能產生影響。

注意:上文配置中gitdir:~/gitee/,不要有空格。

最後

通過本文的介紹,相信你已經瞭解瞭如何在開發過程中使用多個 Git 遠端倉庫,為每個倉庫配置不同的 SSH 金鑰,並且根據檔案路徑自動切換 Git 使用者和 Git 郵箱。 希望本篇能幫助你提高開發效率,以及更好的使用 Git。