一般一台电脑上我们为省去频繁输入密码的问题会配置一个全局的git账号(比如是git账号A)密码到credential.helper,但是有时我们有需求,一个项目仓库A需要用到git账号A,另一个项目仓库B需要用到git账号B,这个时候如果设置的全局的账号就会导致项目仓库B拉代码和推代码出现403,连接拒绝,这时我们就需要期望每个项目各自使用各自的账号了
调查了一波,主要有两种方式,设置https固定账号方式和ssh的公私秘钥方式的方式,遗憾的是后面一种方式折腾半天无效,列在下面仅做参考,也许你有效
不管哪种方式,前提都得先去掉全局的账号配置:
1.看一下gloabal和system的config,主要是看有没有credential.helper把账号密码存起来了,所以看看global或者system哪个设置了保存就unset一下://查看之前设置 git config --global -l git config --system -l //删除之前的配置 git config --global --unset credential.helper git config --system --unset credential.helper
2.清空全局的邮箱和用户名
//查看之前设置 git config --global --list //删除之前的配置 git config --global --unset user.name "你的名字" //删除之前的名字配置 git config --global --unset user.email "你的邮箱"//删除之前的名字配置
1. https固定账号方式
比如进入本地项目仓库A之后,看一下url:git remote -v
,https开头的就是用的https方式,git@ 开头的就是用的ssh方式,我们现在要改成https方式,用set-url按如下格式设置即可
git remote set-url origin https://gitee.com/xxxx/xxxxxx-app.git
默认是origin分支,要设置其他分支也一样; 改好之后,这时候执行git fetch/pull/push这些命令,就要输入一下设置用户的用户名和密码(这里最好用git网站生成的个人Personal access token来),然后就能fetch/pull/push了; 对于项目仓库B也是一样; 每次fetch/pull/push都需要输入密码了; 那么为了避免麻烦,针对每一个本地仓库,设置一下local的credential.helper:
git config --local credential.helper store
这样账号密码就只针对当前仓库保存,对其他仓库没有影响了。针对每一个需要管理的本地仓库,都需要按以上步骤重新设置一次url和credential.helper,设置好之后,就能一直正常fetch/pull/push了!
2. ssh的公私秘钥方式
以下简单列出操作及命令,因我无效,所以此仅做记录,详情访问https://www.jianshu.com/p/371ab45a548c
#进入~/.ssh 文件夹,若不存在就创建
cd ~/.ssh
ssh-keygen -t rsa -C 你的git邮箱
#执行以上命令后,会提示你输入文件名(这里是gitee_rd_rsa)
#输入完文件名后,回车,会要求输入密码,不管,继续回车,再按回车,就生成了一对公钥和私钥
输入命令:ll
#执行以上命令后列出ssh文件夹下面的文件,gitee_rd_rsa就是私钥,gitee_rd_rsa.pub就是公钥,将公钥的内容无损的拷贝到gitee的网站,登录后用户设置里面有个ssh管理,将公钥添加进去保存
##重复以上操作生成另外的一对公钥和私钥,文件名比如是github_rd_rsa
在 ~/.ssh 目录下,新建config文件,内容格式如下保存:
Host giteeTest
HostName gitee.com
User xxxxxx@qq.com
IdentityFile ~/.ssh/gitee_rd_rsa
Host githubTest
HostName github.com
User xxxxxxx
IdentityFile ~/.ssh/github_rd_rsa
接下来 执行ssh-agent让ssh识别新的私钥:
ssh-add ~/.ssh/gitee_rd_rsa
ssh-add ~/.ssh/github_rd_rsa
这样就可以愉快的提交代码了,如果重启电脑后,出现权限拒绝的情况。重新执行下 最后ssh-agent
其中还可以执行ssh -T git@gitee.com 、 ssh -T git@giteeTest 或者 ssh -T git@githubTest 看哈config配置是否ok
还可以执行ssh-add -l 查看ssh-add是否添加成功
网友评论