配置多 Git Remote 倉庫的 SSH ,Git 使用者和郵箱自動切換
theme: cyanosis
開啟掘金成長之旅!這是我參與「掘金日新計劃 · 2 月更文挑戰」的第 7 天,點選檢視活動詳情
在開發中,我們經常需要同時使用多個 Git 遠端倉庫來管理程式碼,這些倉庫可能 Github 倉庫以及 Gitee 的倉庫。在這些倉庫中,為了保障程式碼的安全性和可追溯性,我們通常使用 SSH 協議來進行認證。
本文將介紹如何配置多個 Git 遠端倉庫的 SSH 認證,並根據檔案路徑自動選擇相應的 Git 使用者和 Git 郵箱。
配置 SSH Key
在新增遠端倉庫時,我們可以使用 SSH 協議來進行連線。
- 生成 SSH 金鑰
我們可以使用 ssh-keygen
命令生成 SSH 金鑰,如果已經生成過 SSH 金鑰,可以跳過這一步。
shell
ssh-keygen -t rsa -b 4096 -C "[email protected]"
- 將 SSH 公鑰新增到遠端倉庫
在新增遠端倉庫時,我們可以將生成的 SSH 公鑰新增到遠端倉庫的設定中,這樣就可以使用 SSH 協議連線遠端倉庫。具體方法可以 Github 或 Gitlab 這類的文件。
- 配置 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。
- 配置多 Git Remote 倉庫的 SSH ,Git 使用者和郵箱自動切換
- Brian Armstrong 如何帶領 Coinbase 走出困境
- NEC主任Brian Deese和國家安全顧問Jake Sullivan關於新數字資產行政命令的宣告
- Java 近期新聞:Brian Goetz 介紹 Valhalla 專案的現狀、GlassFish 7.0-M1 和 Loom Lab 專案
- 美OCC前代理署長 Brian Brooks:並非加密貨幣中的一切都需要受到監管
- FF 任命董事會主席:由獨董 Brian Krolicki 擔任,出身投行,曾為美國官員
- 敏捷史話(十六):我對《敏捷宣言》沒有半點貢獻—— Brian Marick
- Brian Armstrong 親述 Coinbase 使命、戰略與文化
- 從零開始使用華為DevEco Studio編寫2048小遊戲