git爬坑不完全指北(一):Permission to xxx.git denied to user的解决方案
由于对之前github账户名不太满意,又不像大神一样需要两个账号绑定。所以今天注册了新账号,想把电脑绑定到新账号上,结果就踩坑了……报错如标题。
在网上按照这个题目可以搜索出一大堆的解决方案,但都是一个思路,那就是两个账号绑定两个密钥。先不说操作过程稍微复杂点吧,关键在于这不是我想要的结果,我就要一个账号!
于是,不妥协的我,开启了搜索→尝试→失败的死循环。终于,2个小时后,我放弃了……成功了。
好了,闲话不多说,上解决方案。
首先分析原因:
通读报错语句的话,我们从中能读出一条信息——老账户想对新账户的仓库进行访问操作,但是被拒绝了;
不管是add、commit都没有问题,只要push,就报错,这说明问题的原因就在push执行这一步;
然后回忆一下,push时候,到底都干了些什么操作,会记住原来的账户信息…emmm…emmm……ding!账号登录!
到这,恍然大悟。第一次执行push时,提示了账户的登录操作。但更换新账户再次push时,并没有再次登录的提示??喵喵喵??
也就是说,我们还是按原账户的信息再执行push操作,所以会报错,拒绝访问;
解决方法:
明白了原因,接下来就是找解决方案了。说到这其实我是惭愧的,因为我最后成功时,并不知道是我当次操作生效了,还是之前的操作生效了;
所以,我把两种方案都写出来,肯定有一种是生效的!
1、git config --global credential.helper cache
设置push登录状态保存时间为15分钟。这个大家都懂,就不解释原因了。我想说的是很多文章里都提到了
git config --global credential.helper "cache --timeout=3600"这个命令设置自定义时间,但是我实际测
试没起到效果。
2、git remote rm origin与git remote add XXX
重新设置origin值。通过git remote -v查看的话,可以看到,其实新账号的origin关联是没有错误的,毕竟add、commit操作都没有问题。
不过这里的重新设置,也只是同样的地址,粘贴一遍,但这样会不会就让登录状态失效了?我不知道(恩,加粗不知道)。因为成功的
时候,分不清是上一步的15分钟到时间了,还是最后这一步操作生效了……但我又重新执行了一次删除、添加,并没有让我再重新登录。所以猜测
账号登录状态的重置跟这个没啥关系,但是又并不绝对肯定,所以暂且作为一种方案写上。
最后成功的话,会重新输入账号密码,然后成功上传到远程仓库,上个截图,庆祝一下~
总结:
发现问题、分析问题、解决问题。
通观我解决问题的整个过程,唯一的卡点就是不明白问题发生的原因,而当我意识到是push登录问题时,剩下的也就无非是等待15分钟,然后不断尝试其他方法。所以,对于问题的解决,先找出痛点,是重中之重。最后,能不换账号还是不换的好,将问题扼杀在摇篮中……。