You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

删除旧目录重新克隆后执行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公钥。
  • GitLab个人访问令牌(PAT)权限不足或已过期
    如果你是用PAT作为密码进行认证的,可能这个令牌已经过期,或者没有配置足够的权限。

    • 解决办法:登录GitLab,进入「个人设置」→「访问令牌」,生成一个新的令牌,勾选 write_repository(push仓库必须的权限),然后在push时用这个令牌作为密码输入,用户名填你的GitLab账号名。
  • 网络代理或防火墙拦截了认证请求
    如果你在公司或校园网络环境下,代理服务器可能会拦截Git的HTTPS请求,导致认证失败。

    • 解决办法:先检查是否设置了Git代理,执行 git config --global --get http.proxy,如果有代理,确认代理地址和凭据配置正确;或者尝试切换到个人网络(比如手机热点)再执行push,看看是否能正常通过认证。
  • Git版本过旧导致兼容性问题
    旧版本的Git对HTTPS认证机制的支持可能存在缺陷,和GitLab的最新认证逻辑不兼容。

    • 解决办法:去Git官网下载并安装最新版本的Git,然后重新尝试push操作。

内容的提问来源于stack exchange,提问作者user2752471

火山引擎 最新活动