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

TortoiseHg启用hggit推送Mercurial仓库到GitLab认证失败如何解决

问题原因

出现HTTP Basic: Access denied认证失败,和你输入的账号密码正确性无关,核心原因有3个:

  1. 你本地能正常执行git add -p、git commit -p是因为这两个命令都是纯本地操作,根本不需要触发远程仓库认证逻辑,执行成功不代表远程认证配置正常。
  2. 目前GitLab已全面禁止HTTP协议下直接使用账号密码做推送认证,所有HTTP推送必须使用个人访问令牌(PAT)作为认证密码,哪怕你输入的账号登录密码完全正确,也会被服务端直接拒绝。
  3. TortoiseHg的hggit扩展走的是Mercurial自身的认证链路,不会自动读取Git全局配置里的凭证存储信息,哪怕你本地Git本身已经配置好可正常推拉的凭证,hggit推送时也无法调用,会反复弹出凭证输入框;如果系统凭据管理器里存过之前输错的旧GitLab凭证,还会自动携带错误凭证发起请求,直接触发认证失败。
解决步骤

按以下顺序操作即可解决问题:

  • 先生成对应权限的GitLab个人访问令牌:在GitLab个人设置里找到访问令牌生成入口,创建一个勾选了read_repository、write_repository权限的令牌,记好生成的令牌字符串,关闭页面后无法二次查看。
  • 清理系统内存储的错误旧凭证:Windows系统打开「凭据管理器- Windows凭据」,找到所有和你使用的GitLab域名相关的Git、Mercurial类凭据全部删除;macOS系统打开「钥匙串访问」,搜索对应GitLab域名的网络凭据全部删除,避免旧凭证干扰请求。
  • 二选一配置认证信息即可:
    1. 直接修改hggit绑定的Git远程地址,把地址改成带令牌的格式:https://<你的GitLab用户名>:<刚才生成的个人访问令牌>@<GitLab域名>/<仓库路径>.git,修改完成后直接执行推送即可,不会再弹出凭证输入框。
    2. 如果不想把令牌写在远程地址里,就修改Mercurial全局配置文件(Windows在用户目录下的mercurial.ini,macOS/Linux在用户目录下的.hgrc),在配置中添加如下段:
      [auth]
      gitlab-repo.prefix = https://<你使用的GitLab域名>/
      gitlab-repo.username = <你的GitLab用户名>
      gitlab-repo.password = <刚才生成的个人访问令牌>
      gitlab-repo.schemes = https
      
      保存配置后重启TortoiseHg,再执行推送即可正常认证。

内容的提问来源于stack exchange,提问作者Vincent BUQUOY-BLANC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:01:02