删除旧目录重新克隆后执行git push origin报401错误的原因
Git Push 401错误的可能原因及解决办法
碰到Git push时的401未授权错误不用慌,这基本都是认证环节出了问题,结合你刚克隆新目录的场景,我整理了几个最可能的原因和对应的解决办法:
本地存储的Git凭据失效或不正确
你刚克隆了新目录,本地还没存储这个仓库的有效认证信息,或者之前旧目录的凭据已经过期失效了。- 快速解决:直接重新执行
git push origin,这时Git通常会弹出窗口让你输入GitLab的用户名和密码(或个人访问令牌),输入正确的认证信息即可。 - 如果还是不行,就清除本地存储的旧凭据:
- Windows:打开「凭据管理器」,找到和gitlab.com相关的条目删除;
- macOS:打开「钥匙串访问」,搜索gitlab.com的相关条目并删除;
- Linux:执行
git credential-cache exit清除缓存的凭据,或者修改~/.gitconfig里的凭据配置。
- 快速解决:直接重新执行
远程仓库的HTTPS URL权限或配置问题
先检查你的远程仓库URL是否正确,执行git remote -v查看输出的push地址是否是你有权限操作的仓库。如果是HTTPS地址,还要确认你是该仓库的项目成员、拥有push权限(比如开发者角色)。- 解决办法:如果URL没问题,就按上面的方法重新输入正确的认证凭据;如果你习惯用SSH,也可以把远程URL换成SSH格式(比如
git@gitlab.com:xxx/your-repo.git),前提是你已经在GitLab上配置了SSH公钥。
- 解决办法:如果URL没问题,就按上面的方法重新输入正确的认证凭据;如果你习惯用SSH,也可以把远程URL换成SSH格式(比如
GitLab个人访问令牌(PAT)权限不足或已过期
如果你是用PAT作为密码进行认证的,可能这个令牌已经过期,或者没有配置足够的权限。- 解决办法:登录GitLab,进入「个人设置」→「访问令牌」,生成一个新的令牌,勾选
write_repository(push仓库必须的权限),然后在push时用这个令牌作为密码输入,用户名填你的GitLab账号名。
- 解决办法:登录GitLab,进入「个人设置」→「访问令牌」,生成一个新的令牌,勾选
网络代理或防火墙拦截了认证请求
如果你在公司或校园网络环境下,代理服务器可能会拦截Git的HTTPS请求,导致认证失败。- 解决办法:先检查是否设置了Git代理,执行
git config --global --get http.proxy,如果有代理,确认代理地址和凭据配置正确;或者尝试切换到个人网络(比如手机热点)再执行push,看看是否能正常通过认证。
- 解决办法:先检查是否设置了Git代理,执行
Git版本过旧导致兼容性问题
旧版本的Git对HTTPS认证机制的支持可能存在缺陷,和GitLab的最新认证逻辑不兼容。- 解决办法:去Git官网下载并安装最新版本的Git,然后重新尝试push操作。
内容的提问来源于stack exchange,提问作者user2752471




