最近多注册了一个Github账号,专门用于fork其他优秀项目的lete-fork
难免会在本地push一些代码上去,但Git有个毛病,它切换账户起来是非常麻烦的,各种上网查资料,和网友的咨询后,总结出了这篇文章内容
参考: https://blog.csdn.net/lqlqlq007/article/details/80613272
正文
这里建议使用ssh方式,千万不要使用https方式,之前我非常喜欢使用https方式clone和push、pull,每次操作都要输入用户名密码(其实我觉得者并没有什么烦的,直到最近我使用了lete-fork账号push的时候,需要切换账号,还要修改
git config --gloabl user.name "xxxx"
和git config --gloabl user.email "xxxx"
后我才知道,https是真的麻烦,其实就是我不想配置ssh)
我现在有两个Github账号分别是lete114
和lete-fork
我现在的全局用户是lete114,可使用git config --list
进行查看user.name
和user.email
项
1 | $ git config --list ## 执行了该命令 |
修改当前项目账户
此时我所在的项目是lete-fork的,我修改了部分代码,并想上传到远程仓库(我肯定要切换到lete-fork账户再进行提交)
由于我上面的全局账户是lete114,那么我所有的git操作都是使用的lete114账户进行的,这时我得使用lete-fork账户进行操作(仅当前项目)
此处声明一下
--global
的作用,global表示全局,如果写了–global的话就会修改全局账户,此处我只需使用lete-fork账户进行push操作,所以无需使用全局(一般全局账户都是自己的大号)
1 | ######### 此处命令不要使用,只是演示说明--global的作用,请执行下方代码块的命令 ######### |
只需以下命令进行局部账户修改(需要执行的命令是如下命令,并非上方代码块)
1 | # 设置当前项目的账户用户名是lete-fork |
打开当前目录下的.git/config
文件可用看出下方的[user]
多了name和email
1 | [core] |
配置lete114账户的SSH
此步骤是配置lete114账户的SSH
生成SSH
1 | ssh-keygen -t rsa -C "你的邮箱" |
执行命令后需要进行3次或4次确认:
- 确认秘钥的保存路径(如果不需要改路径则直接回车)
- 如果上一步置顶的保存路径下已经有秘钥文件,则需要确认是否覆盖(如果之前的秘钥不再需要则直接回车覆盖,如需要则手动拷贝到其他目录后再覆盖)
- 创建密码(如果不需要密码则直接回车)
- 确认密码
此处我是一路回车,并没有设置什么,此后默认生成路径是C:/Users/你电脑的当前用户名/.ssh
(需要开启显示隐藏目录)
.ssh目录下生成两个文件名为id_rsa
和id_rsa.pub
复制id_rsa.pub文件里的全部内容,打开GitHub的账户设置(非仓库设置)
GitHub账户设置:https://github.com/settings/keys
然后点击New SSH Key
按钮添加SSH配置,其中Title
你可用自定义Key
是刚刚复制id_rsa.pub文件里的全部内容,完成后点击Add SSH Key
即可
克隆仓库是使用SSH方式,初次使用SSH方式会出现The authenticity of host ‘github.com (52.74.223.119)’ can’t be established.
根据提示输入yes即可(随后C:/Users/你电脑的当前用户名/.ssh
目录下会多出known_hosts
文件)
配置lete-fork账户的SSH
在C:/Users/你电脑的当前用户名/.ssh
目录下打开Git Bash Here
生成SSH
1 | ssh-keygen -t rsa -C "你的邮箱" |
同上方lete114账户生成类似,但我这里要提醒一句,这次不能一路回车了
显示Enter file in which to save the key (/c/Users/Lete/.ssh/id_rsa):
时就不要一路回车了,这路你需要重新起一个名字
为了区分我在后面追加了一个fork即id_rsa_fork
(为了不和lete114账户冲突,此处建议规范,同我的命名方式一样在id_rsa
后面追加_xxx_xxx
命名法),随后就可用一路回车了
生成后同上方lete114账户一样在账户设置里添加id_rsa_fork.pub
里的全部内容到SSH Key
账户切换
默认使用的是id_rsa
的SSH也就是lete114的SSH,切换需要使用命令切换到id_rsa_fork
(lete-fork账户)
可以使用以下命令查看当前Git Bash Here
使用的是哪个账户的SSH
(注意:如果你在其他Git Bash Here里切换了SSH账户,当前的Git Bash Here是不会跟着切换的,也就是说你每次打开一个新的Git Bash Here就必须切换,否则默认就是id_rsa
(lete114账户))
1 | ssh -T git@github.com |
以下命令可以新增秘钥(注意秘钥地址要换成你要切换用户对应的秘钥地址)
1 | ## 切换到 id_rsa_fork (lete-fork账户SSH) |
上方命令执行后你可能会发现输出了这句话Could not open a connection to your authentication agent.
则先执行这个命令ssh-agent bash
再执行切换账户
1 | ssh-agent bash |
再次输入ssh -T git@github.com
查看当前使用的是哪个账户
1 | ssh -T git@github.com |
再次提醒:如果你现在已经切换到lete-fork账户了,关闭了Git Bash Here后重新打开Git Bash Here则会变为lete114账户.