发布于 

git同时配置github和gitee

背景

之前一直使用的是 gitee 进行笔记和代码的备份,为什么不用 github 呢?

因为 gitee 更快,连接更加稳定。

为什么又要使用 github 呢?

因为突然看见一篇文章说 gitee 开始被监管,出于备份多更安全的原则,所以觉得还是有必要再增加一个备份。

需求

一次提交,可以同时上传到 github 和 gitee。

环境

  1. windows10  (以windows10为例,Linux除了路径略微区别,没指出的都一致)

  2. git bash

用到的知识

1.基本的 git 命令

2.了解文件路径,即相对路径,绝对路径

3.使用过 github 或者 gitee (如果你都没有使用过其中之一,我想你应该不会有这个需求)

创建多个ssh key

  • 一个github账号可以有多个设备的 ssh-key 与其关联。在不同的设备上使用同一个账号,会生成不同的ssh-key。

  • 即一个github账号可以与多个设备进行关联。

  • 同一台设备也可以由多个 github 账号生成多个不同的 ssh-key。将每个账号生成的 ssh-key 与对应的 github 账号进行关联。

  • 即一个设备可以生成多个 ssh-key 与多个 github 账号进行关联。

对于我来说我有一个 gitee 账号,和一个 github 账号,且两个账号是使用的不同邮箱;也有两台设备:一个台式,一个笔记本(Ubuntu),所以创建多个 ssh-key 对我来说是十分有必要的。

查看已经存在的ssh key

打开git bash,输入:ll ~/.ssh,查看已经生成的 ssh-key

像我这里就有两组生成的 ssh-key 分别是 gitee 的 ssh-key 和 github 的 ssh-key,其中 github_id_rsa 为 ssh-key 密钥的私钥部分,github_id_rsa.pub 为 ssh-key 密钥的公钥部分。当然你们的 ssh-key 文件的名称可能和我不一致,因为这是我自己重命名了的。

ssh-key 密钥的位置的位置在:~/.ssh/github_id_rsa。

生成ssh-key

生成一个 Github 用的 SSH-Key, 使用命令:

ssh-keygen -t rsa -C '[邮箱]' -f ~/.ssh/github_id_rsa

然后按三次enter即可。

  • 邮箱使用自己的github账号的邮箱即可,邮箱是生成的 ssh-key 公钥的名称,并不强制要求为某个邮箱,甚至可以不是邮箱。

    那为什么要使用邮箱来标识一个ssh-key?

    因为github账号或者gitee,gitlab都是使用邮箱来注册的,你有可能不只一个这账号,所以使用自己的邮箱账号可以知道这个ssh-key是由哪一个账号生成的。

  • 这里的密钥文件名也可也按照自己的喜好命名:

    github 代表这个 ssh-key 是一个 github 的 ssh-key , id_rsa 是因为默认生成的ssh-key的文件名就是id_密钥类型,即这个rsa 就是密钥的类型。所以使用 github_id_rsa。

  • -t 选择生成密钥的类型:rsa、 ed25519、dsa等

  • -C 指定此密钥的备注信息,一般推荐使用自己的账号的邮箱作为标识

  • -f 指定密钥目录位置, 默认为当前用户路径下的 .ssh 隐藏目录, 也就是 ~/.ssh/目录下 , 同时默认密钥文件名以 id_密钥类型 开头.

    windows中为:C:\Users\用户名.ssh

    Linux中:

    如果是 root 用户, 则在 /root/.ssh/目录下 , 若为其他用户, 则在/home/username/.ssh/目录下。(username是你自己的用户名)

    下图是三次Enter的位置

查看ssh-key

查看ssh-key公钥,使用命令: cat ~/.ssh/密钥文件名.pub.pub代表该密钥是一个ssh-key公钥。

查看ssh-key私钥,使用命令:cat ~/.ssh/密钥文件名

也可以使用记事本,Notepad++ 等打开查看

创建配置文件

在 ~/.ssh/ 目录下创建一个 config 文件,输入:vim ~/.ssh/config,然后在配置文件中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Host和HostName填写 Git 服务器的域名
# github的部分
Host github.com
HostName github.com
PreferredAuthentications publickey
# IdentityFile 指定私钥的路径
IdentityFile ~/.ssh/github_id_rsa

# gitee的部分
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_ed25519

将ssh公钥与账号关联

将对应账号生成的 ssh-key 与对应的账号进行关联。进入自己的github主页,将生成的ssh公钥进行添加即可。

测试

输入ssh -T git@github.com,测试是否已经完成了ssh公钥添加,

如果是第一次需要输入:yes,进行确认将主机host添加到到本机SSH可信列表know_list.

如果不是第一次则会看见:

将本地仓库同时git推送到gitee和github

前面说了,一直使用的是 gitee 作为仓库,那么肯定本地已经存在了一个仓库。

当然可能你本地的仓库是 github 的,但是无所谓,只要是本地已经有了一个仓库,就可以按照这个方法操作。

创建一个仓库

这里创建的是 github 仓库,你们自己可以按照自己的需求创建。

唯一要注意的是:前往不要勾选 Add a README fiel

因为勾选之后会导致 github 会进行一次默认的提交,生成一个 默认的 branch (以前是master,现在是 main),导致和你本地的 branch 名不一致,导致无法正常提交。(当然不是没办法,但这不是本文的讨论范畴)

当然 仓库名 也最好保持一致。

更改本地仓库的配置文件

复制刚创建仓库的 ssh 链接,

进入到自己本地仓库的文件夹(即进行了git init或者git clone的文件夹),

windows中直接使用 记事本打开即可。

Linux执行:sudo vim .git/config

在下面输入:url = 刚刚复制的ssh链接

以后每次提交,都会同时往gitee和github提交。

更多情况

如何将一个项目同时提交到GitHub和Gitee(码云)上 - 知乎 (zhihu.com)

Git使用同一个邮箱生成同一个公钥SSH-Key并配置连接Gitee和GitHub,数次失败并尝试亲测可行!_濮濮噗噗BOOM的博客-CSDN博客


本站由 @Mogra 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。