Git使用 从入门到入土 收藏吃灰系列 (七) 同时配置Gitee、Github 公钥

186 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、前言

讲讲小张的感受:我没有接触过Git,所以看了很多视频,对于入门使用确实只要知道git clone,git add,git commit,git push,git merge ,确实也就足够了。但是我很好奇背后的原理,为什么要用git add到暂存区而不是直接git commit?很多指令之间为什么要按一定的顺序执行?所以这个系列我以初学的时候,小白的角度从安装到工作原理(有的是我自己的见解,如果感觉不对,欢迎指正),再到实际应用!另外,推荐看一遍第三个参考视频,然后看一下第四个参考视频,对工作原理的讲解和实际应用确实不错!

二、同时配置Gitee、Github 公钥

这种方法使用同时配置多个gitee账号或者同时配置gitee、github、gitlab

问题 本地已配置了gitee公钥,如何配置GitHub支持ssh拉取源码?

思路 ssh 方式链接到 Github/Gitee,需要唯一的公钥,如果想同一台电脑绑定两个Github/Gitee 帐号,需要两个条件: 1.能够生成两对 私钥/公钥 2.push 时,可以区分两个账户,推送到相应的仓库

1.创建 ssh key

进入 C:\Users\用户名\.ssh 目录 右击Git Bash Here。输入

ssh-keygen -t rsa -C "密钥名称 随便命名" -f "文件名字"

例如(分两次输入),连按三次回车

ssh-keygen -t rsa -C "GC_Zhang" -f "id_rsa_gitee"
ssh-keygen -t rsa -C "GC-ZF" -f "id_rsa_github"

image-20220121104331257

完成后,会在 C:\Users\用户名\.ssh 文件夹下生成github和码云的私钥和公钥文件

mg-86WAAKNh-1644402444576

2.把公钥文件中的 key 复制到 github 和gitee的ssh公钥中 打开 id_rsa_gitee.pub,把相关 ssh key复制到 gitee设置>ssh公钥 中,标题和公钥不用保持一致

image-20220121162155895

打开 id_rsa_github.pub,把相关 ssh key复制到 githubSettings>SSH and GPG keys

img-vVBzWLMB-1644402454853

3.创建config 文件解决ssh 冲突

在 .ssh 的命令窗口下执行 vi config 在 config 文件中添加以下代码,完成后按Esc输入 :wq 保存退出 也可以直接在文件夹中新建文本,命名config并删掉后缀.txt

# 格式
# xxx(#号是注释,给这段加一个备注,不想加也可以)
	Host 任意主机别名
    HostName 域名地址
    IdentityFile ~/.ssh/自己的ssh key的文件路径
    PreferredAuthentications publickey
    User 注册gitee/github/gitlab的用户名
# 参数说明
# Host : 每个Host要取一个别名
# HostName : 要访问的域名地址
# IdentityFile : 指明上面User对应的identityFile路径

eg:这里Host可以命名其它汉字、名字,我只是为了第4步方便

# Gitee 
    Host gitee.com
    HostName gitee.com
    IdentityFile ~/.ssh/id_rsa_gitee
    PreferredAuthentications publickey
    User GC-Zhang

# Github      
    Host github.com
    HostName github.com
    IdentityFile ~/.ssh/id_rsa_github
    PreferredAuthentications publickey
    User GC-ZF

4.测试SSH key是否生效

ssh -T git@自己配置的Host别名	# 必须区别大写T

image-20220121154349219

出现Hi GC_Zhang! You've successfully authenticated, but GITEE.COM does not provide shell access.就代表配置成功

5.设置单个仓库的配置

如果要区分Github和Gitee的用户提交信息 ,可以把常用的一个设置为全局变量。单独为另一个账号的仓库设置用户信息,这样就不用频繁地做这步。git 的配置分为三级别,System —> Global —>LocalSystem 即系统级别,Global 为配置的全局,Local 为仓库级别,优先级是 Local > Global > System

eg:常用Github,偶尔用Gitee,那么Github的用户信息不用做修改。

克隆Gitee的仓库(每一次克隆新仓库都要重新设置),进入项目文件夹单独设置。查看一下现在的全局配置是什么?

git config --global --list

image-20220121102504826

单独为仓库配置一个用户名(后来我发现不加local后缀也是默认local)

# 单独设置仓库 用户名/邮箱 如果没有空格可以不用引号
git config --local user.email "xxx"
git config --local user.name "xxx@x.com"

g-cYhlHujk-1644402318313

查看本地仓库配置

git config --local --list

g-98H03PeE-1644402318314

提交一次记录,现在日志里的信息就是新设置的用户信息,但仅对当前仓库有效

image-20220121170634417

多台电脑使用统一的 ssh 文件

.ssh 文件夹压缩保存,在其他电脑上解压放入对应的目录下 这里需要注意id_rsa 和id_rsa.pub的权限,id_rsa的权限是600,id_rsa.pub的权限是644。

如果上述方法不能通过测试,则需要在目标设备先创建好同名的 ssh ,然后用之前的 私钥和公钥覆盖掉目标设备上的文件

参考

这部分参考了这两个,但是稍微做了改进,因为他们是删除全局配置,之后重新配置。我认为不需要对原来的配置删除,将常用的作为全局配置,需要使用另一个不常用的账号的时候再单独配置一个本地配置

从永远到永远-Windows10配置多个git账号(以两个gitee账号为例)_MACHENIC的博客-CSDN博客

亲测本地电脑同时配置gitee和github账号,实现ssh免密拉取和提交代码_初学者乐园的博客-CSDN博客

第四步可能会遇到一些报错,可以参考这篇文章。因为我的电脑没报错但朋友的有报错,所以没演示

git@github.com: Permission denied (publickey)_勿忘初心的博客-CSDN博客_git@github.com

下一期介绍

  • 什么是分支?
  • 分支的作用?