配置多 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。