git身份认证

git在CLI访问远程仓库有两种url

1
2
ssh形式:git@github.com:username/reponame.git
http形式:https://github.com/username/reponame.git

ssh形式

通过ssh访问远程仓库如github,需要设置ssh key pair,设置后做git操作不需要输入github的用户名和密码。所以如果clone仓库时使用的是ssh url,在CLI访问github就是用的ssh密钥对来做身份认证

http形式

http形式,每次在命令行做git操作,如git pull、git push都需要输入用户名和密码,为了简化这步操作,git有了凭证存储,即把用户名和密码存储在本地机器上。

参见 Git工具-凭证存储 github-Which remote URL should I use

git-for-windows安装时选择凭证管理

git-for-windows安装时可以选择credential helper

image-20210316140350683

https用了ssl/tls来加密

image-20210316140200110

查看配置 credential.helper的值

下面的命令可以输入git所有的配置及所在文件

1
git config --list --show-origin

用git config –list |grep credential.helper 查看所有的值

image-20210316141558726

下面这个错误是由于使用了网络代理

image-20210316131620686

git credential fill

参见https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%87%AD%E8%AF%81%E5%AD%98%E5%82%A8

凭证管理

取消凭证管理

用以下命令可以取消三级配置的credential.helper,然后做git操作需要输入username和password

1
2
3
git config --system --unset credential.helper
git config --global --unset credential.helper
git config --local --unset credential.helper

恢复凭证管理需要用下面的命令,这只配置了两级,global级的会覆盖system级的值,

用git config –local credential.helper value 可以配置当前仓库的。

1
2
git config --system credential.helper manager-core
git config --global credential.helper manager

windows凭证管理

使用凭证管理后,这些凭证存在windows凭证管理器里,如果手动删除了凭证,使用git操作会提示需要登录

image-20210316160124703

image-20210316160001011

存储多个git账户凭证

https://stackoverflow.com/questions/52222046/how-to-store-credentials-locally-per-repo-in-git-credential-manager-for-windows

参考 https://www.cnblogs.com/volnet/p/git-credentials.html

https://blog.csdn.net/lqlqlq007/article/details/79065095