前言

由于最近需要有多个账号、多个邮箱,并且需要配置多个 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_xxxxxxxxxx为托管的网站。后两个选项直接回车即可。

以 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 后,进行查看:

{% image https://i.loli.net/2019/04/24/5cbfd89dd7214.jpg '' '' %}

搞定。

修改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 项目都要按这样重新配置一遍。虽然没多少事儿,但是其实是有点蛋疼的……