讲讲小张的感受:我没有接触过Git
,所以看了很多视频,对于入门使用确实只要知道git clone
,git add
,git commit
,git push
,git merge
,确实也就足够了。但是我很好奇背后的原理,为什么要用git add
到暂存区而不是直接git commit
?很多指令之间为什么要按一定的顺序执行?所以这个系列我以初学的时候,小白的角度从安装到工作原理(有的是我自己的见解,如果感觉不对,欢迎指正),再到实际应用!另外,推荐看一遍第三个参考视频,然后看一下第四个参考视频,对工作原理的讲解和实际应用确实不错!
这种方法使用同时配置多个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"
完成后,会在 C:\Users\用户名\.ssh
文件夹下生成github和码云的私钥和公钥文件
2.把公钥文件中的 key 复制到 github 和gitee的ssh公钥中
打开 id_rsa_gitee.pub
,把相关 ssh key复制到 gitee 的 设置>ssh公钥
中,标题和公钥不用保持一致
打开 id_rsa_github.pub
,把相关 ssh key复制到 github 的 Settings>SSH and GPG keys
中
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
出现Hi GC_Zhang! You've successfully authenticated, but GITEE.COM does not provide shell access.
就代表配置成功
5.设置单个仓库的配置
如果要区分Github和Gitee的用户提交信息 ,可以把常用的一个设置为全局变量。单独为另一个账号的仓库设置用户信息,这样就不用频繁地做这步。git 的配置分为三级别,System
—> Global
—>Local
。System
即系统级别,Global
为配置的全局,Local
为仓库级别,优先级是 Local
> Global
> System
eg:常用Github,偶尔用Gitee,那么Github的用户信息不用做修改。
克隆Gitee的仓库(每一次克隆新仓库都要重新设置),进入项目文件夹单独设置。查看一下现在的全局配置是什么?
git config --global --list
单独为仓库配置一个用户名(后来我发现不加local后缀也是默认local)
# 单独设置仓库 用户名/邮箱 如果没有空格可以不用引号
git config --local user.email "xxx"
git config --local user.name "[email protected]"
查看本地仓库配置
git config --local --list
提交一次记录,现在日志里的信息就是新设置的用户信息,但仅对当前仓库有效
多台电脑使用统一的 ssh 文件
.ssh 文件夹压缩保存,在其他电脑上解压放入对应的目录下
这里需要注意id_rsa 和id_rsa.pub的权限,id_rsa的权限是600,id_rsa.pub的权限是644。
如果上述方法不能通过测试,则需要在目标设备先创建好同名的 ssh ,然后用之前的 私钥和公钥覆盖掉目标设备上的文件
这部分参考了这两个,但是稍微做了改进,因为他们是删除全局配置,之后重新配置。我认为不需要对原来的配置删除,将常用的作为全局配置,需要使用另一个不常用的账号的时候再单独配置一个本地配置
从永远到永远-Windows10配置多个git账号(以两个gitee账号为例)_MACHENIC的博客-CSDN博客
亲测本地电脑同时配置gitee和github账号,实现ssh免密拉取和提交代码_初学者乐园的博客-CSDN博客
第四步可能会遇到一些报错,可以参考这篇文章。因为我的电脑没报错但朋友的有报错,所以没演示
[email protected]: Permission denied (publickey)_勿忘初心的博客-CSDN博客[email protected]
下一期介绍
- 什么是分支?
- 分支的作用?
专栏速览:
- Git使用 从入门到入土 收藏吃灰系列(一) 专栏前言
- Git使用 从入门到入土 收藏吃灰系列(二) Git的安装与配置
- Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
- Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理
- Git使用 从入门到入土 收藏吃灰系列(五) Git本地仓库搭建
- Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库
- Git使用 从入门到入土 收藏吃灰系列 (七) 同时配置Gitee、Github 公钥
- Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用
- Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退
- Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull
- Git使用 从入门到入土 收藏吃灰系列 (十一) 下载所有远程仓库分支
- Git使用 从入门到入土 收藏吃灰系列 (十二) git merge 与 git rebase
- Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff
- Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
- Git使用 从入门到入土 收藏吃灰系列 (十五) 自定义Git命令
- Git使用 (十六) Github上的小按钮
- Git使用 (十七) 解决Git Bash中文乱码