前言
由于最近需要有多个账号、多个邮箱,并且需要配置多个 Git 托管网站,因此不能直接使用 git config --global
来设置全局邮箱。钻研了一波,记录一下。
环境配置
- 操作系统: Windows 10 1809
- 源码管理:Git bash
操作步骤
以下操作建议在 git bash 下进行
清理旧有配置
一般来说都会存在全局配置,所以这里先把全局设置干掉
git config --global --unset user.name
git config --global --unset user.email
配置公钥
Git 配置文件一般存在于当前用户下的 .ssh
目录下,我的是在 C:\Users\Administrator\.ssh
。打开该文件夹,打开 git bash,对每一个 Git 托管网站都生成一个公钥。
以 Github 举例,我的配置就是 ssh-keygen -t rsa -C "leezj9671@gmail.com"
。输入后会回显
第一要求你输入保存密钥的文件名,为了方便区分,我建议的命名方式是 id_rsa_xxxxx
,xxxxx
为托管的网站。后两个选项直接回车即可。
以 Github 举例,生成的文件为私钥文件 id_rsa_github
,公钥文件 id_rsa_github.pub
。复制公钥文件内容到 Github 的 SSH 密钥管理页面即可,其它代码托管网站同理。
如果你的邮箱都是同一个,生成的公钥都是相同的,因此其实全都用一个公钥就可以了。
添加SSH私钥
由于我们使用的是 SSH 协议来进行 git 操作,在本地使用私钥文件,就能对使用了 SSH 公钥的服务器进行连接。因此我们使用 ssh-add -l
来看一下我们是否已经加入了密钥。
当我们发现报错时,使用
eval `ssh-agent -s`
开启 SSH 客户端。
{% image https://i.loli.net/2019/04/24/5cbfd80907f83.jpg '' '' %}再使用 ssh-add ./id_rsa_github
后,进行查看:
搞定。
修改Git配置文件
在 .ssh
文件夹下有个 config
文件,如果没有的话新建一个。
我使用的三家 Git 托管网站配置文件内容如下:
# gitee
Host git@gitee.com //别名,用这个以后可以直接用常规的SSH下载,这个好处以后你会知道的
HostName gitee.com //网站域名
User xxx //网站用户名
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee //指定使用的密钥文件
//Port 443 //有的网站不能走22端口,所以必要时需要手动指定端口
# github
Host git@github.com
HostName github.com
User leezj9671
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
# bitbucket
Host git@bitbucket.org
HostName bitbucket.org
User xxxx
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_bitbucket
其它网站同理。
测试SSH连接
类似于 ssh -T git@github.com
的命令,完美~
测试项目push/pull操作
线上项目
在项目下载里面选择 SSH 方式,直接复制地址。
以我的项目举例,用 git clone git@github.com:Leezj9671/ctf_py.git
即可。由于在配置文件中用的别名就是 git@github.com
,因此直接复制就行,比较省事儿。
以后 push 直接 git push
即可。
已有项目
本地已有的 git 项目关联远端的话,也很简单,到该 repo 下,配置当前的用户名和邮箱就行
git config user.name "leezj9671"
git config user.email "leezj9671@gmail.com"
随后到该仓库下的 .git
文件夹下,编辑 config
文件,修改 [remote "orgin"]
信息,如果没有的话直接复制下方代码,修改后粘贴进去就行就行
[remote "origin"]
url = https://github.com/Leezj9671/ctf_py //就改这行,https或者ssh形式都ok
fetch = +refs/heads/*:refs/remotes/origin/*
如果你之前一直用全局配置的话,所有 git 项目都要按这样重新配置一遍。虽然没多少事儿,但是其实是有点蛋疼的……