最近想提交一些代码到github上时发现提交的时候报错
Remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
Authentication failed for ‘https://github.com/xxxxx/xxxx.git/’
报错的大致意思就是github在2021/8/13开始远程推送不再支持密码验证了,改成token验证了
第一步:登录进github界面点击Settings
第二步:在界面左侧找到下面的菜单并点击Developer settings
第三步:在下面的页面点击Personal access tokens
第四步:在下面页面点击Generate new token
第五步:给token起一个描述名字(名字可以随便起)
第六步:设置token多久后过期
第七步:设置token拥有的权限(具体每个权限代表的意思有兴趣的可以自己去了解,对于是给自己用的token来说,就全部勾选了,代表最高权限)
第八步:点击Generate token,生成一个token
第九步:复制token(关掉当前页面,就再也看不到当前token,请确保自己已复制)
以上生成token的步骤就完结了
下面是怎么使用该token
如果你是已经克隆过远程仓库的代码的,也就是在本地已经有远程仓库地址,而且本地分支和远程仓库分支也建立了关联关系,那么点击Git Bash Here 进入git 命令行模式执行下面的命令就可以正常推送代码了
git remote set-url <alias> https://<your_token>@github.com/<username>/<repo>.git
<alias>:包括<>在内的全部替换成你设置的远程仓库地址的别名
<you_taken>:包括<>在内的全部替换成你复制的token
<username>:包括<>在内的全部替换成你的github上的username
<repo>:包括<>在内的全部替换成你要访问的github上的仓库名称
设置成功后就可以正常推送代码到github上面了
如果你本地还没有设置远程仓库的地址,或是远程仓库的地址你拉取(fetch)、推送(push)都不行,那么执行下面的步骤即可
第一步:点击Git Bash Here 进入git 命令行模式
第二步:使用git命令查看是否已经设置了github远程仓库地址 git remote -v
如果没有设置github远程仓库就会显示空,如下图
如果设置了github远程仓库就会显示下面结果
第三步:把当前设置的没用的远程仓库地址在本地删除(如果第二步没有设置的可以忽略掉这一步直接进入后面步骤)
使用 git remote rm 命令
:远程仓库在本地设置的别名,在使用上面一条命令时,包括<>在内全部替换成你本地的远程仓库别名
使用 git remote add https://@github.com//.git 命令
:远程仓库在本地设置的别名,在使用上面一条命令时,包括<>在内全部替换成你本地的远程仓库别名
:包括<>在内的全部替换成你复制的token
:包括<>在内的全部替换成你的github上的username
:包括<>在内的全部替换成你要访问的github上的仓库名称
第五步:拉取远程仓库的分支信息到本地
使用 git fetch 命令 将远程仓库的分支信息拉取到本地
第六步:使本地的分支和远程仓库的分支建立对应关系
这里分为三种情况:
第一种:本地分支和远程的分支都已经存在,那么使用下面这个命令
使用 git branch --set-upstream-to=/ 命令
:远程仓库在本地设置的别名,在使用上面一条命令时,包括<>在内全部替换成你本地的远程仓库别名
:包括<>在内全部替换成你远程仓库的分支名称
:包括<>在内全部替换成你本地仓库的分支名称
第二种:远程分支已经有了,但本地还没有对应分支
对于这种情况,在本地创建一个和远程仓库对应的分支出来(可以使用idea,也可以使用git命令行的方式),然后执行第一种的命令
这样第二种情况也可以正常推送代码了
第三种:本地新创建的一个分支,而远程仓库没有对应分支
使用 git push --set-upstream 命令在远程仓库创建指定名称的分支
:远程仓库在本地设置的别名,在使用上面一条命令时,包括<>在内全部替换成你本地的远程仓库别名
:包括<>在内全部替换成你想要创建的远程仓库的分支名称