在GitLab上下载代码时,会让你输入账号密码登录,会给出提示:
Cloning into 'xx'...
remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password. See https://xx.cn/xx_git#error-on-git-fetch-http-basic-access-denied
fatal: Authentication failed for 'https://xx.git/'

核心:账号开启了二次验证 (2FA),不能用账号密码,必须使用个人访问令牌(Personal Access Token,PAT);或者旧的密码 /token 已经失效,常见于 GitLab。
方案 1:用 PAT 拼接在 clone 地址里(推荐)
-
登录你的 GitLab,生成个人访问令牌 (PAT )
- 权限勾选:
read_repository(仓库读取权限,如果需要提交还要勾选 write 相关) - 复制生成的 token(只显示一次,保存好)
- 权限勾选:
-
修改 clone 命令,把
用户名:token塞进 url:
示例:
git clone https://zhangsan:glpat-xxxxxxxxxxxx@gitlab.xxx.com/sx-xxx/sx-xxx_fe.git
个人访问令牌 (PAT )申请
⚠️ 令牌只在生成那一刻显示一次,页面刷新 / 关掉之后就再也看不到了,生成完立刻复制保存!
- 登录你的 GitLab 网页端(公司内网 GitLab / 极狐 GitLab 都一样)
- 右上角点你的头像 → 【编辑个人资料】(Edit profile)

- 左侧菜单栏找到:访问 > 个人访问令牌 (Access > Personal access tokens);旧版界面叫【Access Tokens 访问令牌】

- 填写表单(重点)
- 令牌名称 :随便写,例如
windows-git-clone,方便以后辨认 - 过期日期:选一个到期时间(最多 365 天,不填默认一年)
- 权限范围 (Scopes)【必勾选】 :✅ read_repository (只读仓库,拉代码必须这个权限;如果以后还要提交代码,再加
write_repository) - 其他 api、read_user 可选,clone 代码只需要
read_repository
- 令牌名称 :随便写,例如
- 点【生成令牌 / Generate token】
- 页面会出现一串以
glpat-开头的字符串,全部复制,这就是你的访问令牌!
✅ 两种使用方式
方式 A:直接拼在 git clone 地址里(推荐一次性拉代码)
git clone https://你的GitLab账号名:复制的glpat-xxxx@gitlab地址/xxx/sx-xxx_fe.git
方式 B:弹窗输入账号密码
- 先去 Windows【凭据管理器】删除旧的 gitlab 缓存凭据
- 执行普通
git clone https://xxx.git - 弹窗用户名填你的 GitLab 账号;密码框粘贴这个 glpat 令牌,不要填登录密码
方案 2:清除 Windows 旧的凭证缓存(经常踩坑!)
Windows 会保存旧的账号密码,即使你重新输入,git 还在用缓存里失效的凭据。
- 打开控制面板 → 用户账户 → 凭据管理器 → Windows 凭据
- 找到对应 git 地址的条目(gitlab.xxx.com),直接删除
- 重新执行 git clone,弹窗输入:
- 用户名:你的账号
- 密码:粘贴 PAT 令牌,不是账号密码
方案 3:检查 2FA 状态
- 如果账号开启了二次验证,绝对不能填登录密码,只能填 PAT
- 如果没开 2FA,说明你输入的账号 / 密码错误,或者仓库没有权限(项目没分配给你)
方案 4:切换 SSH 方式(长期推荐,不用每次带 token)
-
生成 ssh 密钥,把公钥添加到 GitLab 账号 SSH 密钥
-
使用 ssh 地址 clone:
git clone git@gitlab.xxx.com:sx-xxx/sx-xxx_fe.git