clone远程代码 在不同电脑上git_Git 同一电脑配置多个远程仓库
當一臺電腦需要連接多個遠程倉庫的時候如何配置。如一個倉庫需要連接github、另一個倉庫需要諒解gitlab、還有一個倉庫需要連接gitee等。
同一電腦配置多個倉庫,如果倉庫不為同一網站則使用同一個公鑰即可。本文講的是分開配置的方法
1.配置一個遠程倉庫
(1)生成ssh-key
輸入如下代碼生成一個ssh-key
ssh-keygen -t rsa -C "yourmail@gmail.com"
一般情況下連續(xù)三個回車直接生成ssh-key出現如下方代碼
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_ecdsa.
Your public key has been saved in /home/username/.ssh/id_ecdsa.pub.
The key fingerprint is:
dd:15:ee:24:20:14:11:01:b8:72:a2:0f:99:4c:79:7f username@localhost-2011-12-22
The key's randomart image is:
+--[ECDSA 521]---+
| ..oB=. . |
| . . . . . |
| . . . + |
| oo.o . . = |
|o+.+. S . . . |
|=. . E |
| o . |
| . |
| |
+-----------------+
第一個回車后會出現
Generating public/private rsa key pair.Enter file in which to save the key (/c/Users/Administrator.2017.V.2.12-318/.ssh/id_rsa):
要求輸入想要存儲的文件名的位置和名稱 ( 如果不輸入則名稱默認為~/.ssh/id_rsa、如果你僅僅要配置一個帳號,那么我們使用默認名稱即可)
第二個回車后出現:輸入私鑰的密碼
Enter passphrase (empty for no passphrase):
第三個回車后:為確認輸入私鑰的密碼
Enter same passphrase again:
這里直接回車默認設置為無密碼,使用默認即可
到這里生成SSH-KEY的事就完成了,你在當前文件夾會看到兩個文件:
id_rsa你的私鑰); id_rsa.pub(你的公鑰)
(2) 查看的公鑰文件的實際內容,添加到對應的 遠程倉庫賬戶中
cat ~/.ssh/id_rsa.pub
參數解釋
也可以通過如下代碼來生成ssh-key
ssh-keygen -t rsa -f ~/.ssh/id_rsa_x -C "yourmail@xxx.com"
-f 后面內容為指定的ssh-key生成的位置和名稱
-t 參數之后,我們請求建立一個 “RSA” 類型的密鑰。RSA 是當前最新并且最安全的一種形式。
-C 參數之后,我們提供了一個注釋,你可以把它想象為對這個密鑰的一種描述或標簽。例如使用你的 email 地址。總之,一個能讓你之后更容易識別的注釋。
2. 配置多個遠程倉庫
生成三個ssh-key
生成三個名稱不同ssh-key
分別命名為id_rsa_github;id_rsa_github2;id_rsa_github;id_rsa_gitee
# 可以采用如下方式 在第一個回車后輸入名稱
ssh-keygen -t rsa -C "yourmail@gmail.com
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/QuQu/.ssh/id_rsa): id_rsa_gitlab
編輯config文件,配置不同的倉庫指向不同的密鑰文件
如果沒有則在~/.ssh文件夾下新建 config文件
windows 在Window進入C:/Users/你的用戶名/.ssh文件夾,右鍵新建一個文本文件,改名為config即可。這里要注意,沒有.ssh文件夾的要新建一個.ssh名的文件夾。
Linux進入.ssh文件夾:cd ~/.ssh,新建config文件:touch config;或者:touch ~/.ssh/config。這里要注意,沒有.ssh文件夾的要新建一個.ssh名的文件夾。
添加如下內容
# github配置
Host github.com(可更改)// 主機名字,不能重名
HostName github.com// 主機所在域名或IP
User git// 用戶名稱
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github// 私鑰路徑
# github配置(第二個與第一個不是一個倉庫但是同為github)
Host github2.com(可更改)// 主機名字,不能重名
HostName github.com// 主機所在域名或IP
User git// 用戶名稱
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github2// 私鑰路徑
# gitlab配置
Host gitlib.com(可更改)
HostName gitlab.xxx.com(gitlab倉庫域名)
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
# gitee配置
Host gitee.com(可更改)
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
清空本地的 SSH 緩存,添加新的 SSH 密鑰 到 SSH agent中
這里如果你用的github官方的bash,ssh-agent -s,如果是其他的,比如msysgit,eval $(ssh-agent -s)
# 如果在.ssh目錄下可省略文件路徑 :ssh-add id_rsa_github
ssh-add -D
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitlab
測試 ssh 鏈接
ssh -T git@github.com
ssh -T git@github2.com
ssh -T git@gitee.com
ssh -T git@gitlab.com
# xxx! You’ve successfully authenticated, but GitHub does not provide bash access.
# 出現上述提示,連接成功
取消 git 全局用戶名/郵箱的設置,設置獨立的 用戶名/郵箱
# 取消全局 用戶名/郵箱 配置
$ git config --global --unset user.name
$ git config --global --unset user.email
# 進入項目文件夾,單獨設置每個repo 用戶名/郵箱
$ git config user.email "xxxx@xx.com"
$ git config user.name "xxxx"
命令行進入項目目錄,重建 origin (whatever 為相應項目地址)
$ git remote rm origin
# 遠程倉庫地址,注意Host名稱
$ git remote add origin git@second.github.com:githubUserName/repName.git
$ git remote -v # 查看遠程
# ssh -vT git@github.com可以打印log 通過此方法可以debug如果連接不成功
原理分析
ssh 客戶端是通過類似 git@github.com:githubUserName/repName.git 的地址來識別使用本地的哪個私鑰的,地址中的 User 是@前面的git, Host 是@后面的github.com。
如果所有賬號的 User 和 Host 都為 git 和 github.com,那么就只能使用一個私鑰。所以要對User 和 Host 進行配置,讓每個賬號使用自己的 Host,每個 Host 的域名解析到 github.com,如上面配置中的Host gitlab.com。
配置了別名之后,新的地址就是user@host:repName/repName.git(在添加遠程倉庫時使用)。
這樣 ssh 在連接時就可以區(qū)別不同的賬號了。
使用新的公私鑰
情景1:使用新的公私鑰進行克隆操作
git clone git@gitlab.com:username/repo.git
注意此時要把原來的github.com配置成你定義的github
情景2:已經克隆,之后才添加新的公私鑰,我要為倉庫設置使用新的公私鑰進行push操作
修改倉庫的配置文件:.git/config 為
[remote "origin"]
url = git@gitlab.com:gitlabUserName/repName.git
總結
以上是生活随笔為你收集整理的clone远程代码 在不同电脑上git_Git 同一电脑配置多个远程仓库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优盘里文件夹变成html,U盘里面的文件
- 下一篇: Openbravo如何新建一个调用