起因是一个多月没写代码,才发现git pull
用不了了,错误如下:
$ git pull |
原来是2021年8月13日后Github为了防黑客禁止了密码验证方式,公告详见:2020-12-15-token-authentication-requirements-for-git-operations,意思是如果使用HTTPS进行Git操作需要使用token替换原来的密码。
使用HTTPS + token
token是一个有使用期限的hash,需要登录Github后在Setting => Developer Setting中定期生成,token用于执行Git操作时验证账户,也可以用来访问Github API。token的生成方式见:creating-a-personal-access-token
但是token使用繁琐,感觉用一串随机hash用来替代密码还不如用SSH,另外一种解决方法就是抛弃HTTPS链接,使用SSH。
使用SSH
确定你的Git已设置用户名和邮箱
git config --global user.name "YourName"
git config --global user.email "email@mail.com"查看你的
~/home
目录下是否已经生成过ssh-key
ll ~/.ssh
如果目录不存在或者没有看到
id_rsa
和id_rsa.pub
这两个文件就新建一个ssh-key
ssh-keygen -t rsa -C "email@mail.com"
# 确保email地址相同向你的远程Git仓库加入你的公钥
cat ~/.ssh/id_rsa.pub
测试
ssh-key
$ ssh -T git@github.com
# Hi XUranus! You've successfully authenticated, but GitHub does not provide shell access.对于本地remote已经是HTTPS的repo,转换本地连接远程Git的地址
修改.git/config
文件:
把url = http://github.com/YourName/project.git
改为url = git@github.com/YourName/project.git
或者用命令行操作:git remote -v # 查看remote
git remote set-url origin git@github:YourName/project.git # 重新设置remote url
修改完后,再次git pull
,大功告成!