Git 密码错误总结之 git https fatal: HTTP request failed

在提交项目时经常遇到账号密码错误,这是让许多头疼很久的事情,网上的方法很多,但不一定适合,接下来我大概梳理下。

remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://********

首先我们要理解两个概念:1、Smart http 2、ssh 

HTTP: github使用的是Smart http协议,而它又是基于http协议的。不过为了方便,后面我也直接使用http协议来称呼它.

当你使用http协议的时候,可以不必在本地进行任何配置就可以push、clone、pull远程仓库,也就是说你可以在任何地方使用          这个协议,即具有本地无关性。这是这个协议区别于ssh协议的一大特点。因为http协议不会记住也不会知道请求来自于谁,除非使用特殊方法,如cookie。因此对于那些需要授权的服务器,必须输入用户名和密码进行验证才能获取或推送数据,这样服务器才知道你是谁到底能不能获取或推送数据。

http协议的特点恰恰与ssh协议相反,ssh协议靠ssh key来识别你到底有没有权限推送或者获取数据,而ssh key保存在本地,如果你本地没有ssh key的话,当然是无法完成获取或推送数据的操作的。二者刚好形成互补对立的关系。

看完这两段话你大概已经知道git提交远程仓的协议原理了

 

那这两个协议有什么优缺点呢?

  • http协议

    • 优点:省去了本地配置的麻烦,只要有URL和相应的权限便能进行相应的操作

    • 缺点:每次操作都需要频繁验证,除非使用密码缓存机制

  • ssh协议

    • 优点:推送或获取数据时不需要每次输入密码进行验证

    • 缺点:在使用之前需要进行配置,并生成ssh key

当你搞清楚这两个的区别,你发Git提交也会不一样,这样你就能更快的定位到问题

我本身用的是HTTP协议,所以跟ssh秘钥没多大关系

这样我就联想到我的密码是不是有误,接下来两种方法可进行密码修改

1、git config --system --unset credential.helper

之后你在push就会提示输入名称和密码

2、打开控制面板 >> 用户账号 >>管理你的凭证 >>普通凭证 >> 修改 

通过方法二重置账号密码,大功告成

 

你可能感兴趣的:(Git学习)