You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新Ubuntu22.04系统用相同Git配置Push时出现认证失败

解决方案

你的问题核心是全局Git配置里的**个人访问令牌(PAT)**失效,或者新系统的凭证处理逻辑和旧系统不一致导致认证失败。以下是具体修复步骤:

1. 排查令牌有效性

先暂时禁用全局的URL替换配置,直接测试认证:

  • 打开全局Git配置文件:
    nano ~/.gitconfig
    
  • 找到下面这段配置,在开头加#注释掉:
    #[url "https://api:<stuff that looks like a token>@github.com/"]
    #    insteadOf = https://github.com
    
  • 保存退出后,尝试执行git push,此时Git会提示你输入用户名和密码:
    • 用户名填你的GitHub账号名gischer
    • 密码不要填账号登录密码,填个人访问令牌(PAT)
      如果能成功push,说明原来的令牌已经过期或权限不足;如果还是失败,继续下一步。

2. 生成新的个人访问令牌(PAT)

GitHub早已停止支持账号密码直接通过HTTPS进行Git操作,必须使用PAT:

  • 登录GitHub账号,进入「Settings」→「Developer settings」→「Personal access tokens」→「Tokens (classic)」
  • 点击「Generate new token」,勾选至少repo权限(私有仓库需要),如果是公开仓库勾选public_repo
  • 生成后复制令牌(只显示一次,务必保存好)

3. 重新配置Git认证

方法一:恢复URL替换配置(和旧系统逻辑一致)

  • 再次编辑~/.gitconfig,把之前注释的配置替换为新令牌(注意把api换成你的用户名gischer):
    [url "https://gischer:<你的新PAT>@github.com/"]
        insteadOf = https://github.com
    
  • 保存后测试git push,应该就能正常认证。

方法二:使用系统凭证助手(更省心,自动保存令牌)

Ubuntu 22.04可以用libsecret作为凭证助手,自动保存PAT,不用每次手动配置URL:

  • 安装依赖:
    sudo apt update && sudo apt install libsecret-1-0 libsecret-1-dev
    cd /usr/share/doc/git/contrib/credential/libsecret
    sudo make
    
  • 修改全局Git配置的凭证助手:
    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
    
  • 执行git push,输入用户名gischer和新PAT,系统会自动保存凭证,后续操作无需再输入。

4. 修复本地仓库的小问题

本地仓库配置里的remots是拼写错误,应该改成remotes,避免后续fetch出现问题:

  • 打开本地仓库的配置文件:
    nano .git/config
    
  • 把fetch = +refs/heads/*:refs/remots/origin/*改成:
    fetch = +refs/heads/*:refs/remotes/origin/*
    

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:37:42