Files
gerrit/HTTP认证问题解决方案.md
2025-12-22 17:12:39 +08:00

114 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HTTP 认证问题解决方案
## 问题现象
```
remote: Unauthorized
fatal: Authentication failed for 'http://101.43.95.130:8080/test-project/'
```
## 问题原因
`DEVELOPMENT_BECOME_ANY_ACCOUNT` 模式下HTTP 认证可能需要特殊处理。
## 解决方案
### 方案一:配置 Git 凭证存储(推荐)
在您的本地电脑上执行:
```bash
cd /d/ttt/test-project
# 配置 Git 凭证存储
git config credential.helper store
# 配置用户名
git config credential.http://101.43.95.130:8080.username renjianbo
# 或者全局配置
git config --global credential.helper store
git config --global credential.http://101.43.95.130:8080.username renjianbo
# 重新推送
git push origin HEAD:refs/for/master
```
当提示输入密码时,直接按回车(留空)。
### 方案二:在 URL 中使用空密码
```bash
cd /d/ttt/test-project
# 修改远程 URL包含用户名和空密码
git remote set-url origin http://renjianbo:@101.43.95.130:8080/test-project
# 推送
git push origin HEAD:refs/for/master
```
### 方案三:使用 Git Credential Manager
如果使用 Windows Git Credential Manager
```bash
cd /d/ttt/test-project
# 清除已保存的凭证
git credential reject <<EOF
protocol=http
host=101.43.95.130
port=8080
EOF
# 重新推送,会弹出凭证对话框
git push origin HEAD:refs/for/master
```
在对话框中:
- Username: `renjianbo`
- Password: 留空或输入任意字符
### 方案四:手动创建凭证文件
在 Windows 上,可以手动创建凭证文件:
```bash
# 创建凭证文件(如果不存在)
mkdir -p ~/.git-credentials 2>/dev/null || true
# 添加凭证格式protocol://username:password@host:port
echo "http://renjianbo:@101.43.95.130:8080" >> ~/.git-credentials
# 配置 Git 使用凭证文件
git config --global credential.helper store
# 推送
cd /d/ttt/test-project
git push origin HEAD:refs/for/master
```
## 快速修复(最简单)
执行以下命令:
```bash
cd /d/ttt/test-project
# 方法 1配置凭证存储和用户名
git config credential.helper store
git config credential.http://101.43.95.130:8080.username renjianbo
# 方法 2修改 URL 包含空密码
git remote set-url origin http://renjianbo:@101.43.95.130:8080/test-project
# 推送
git push origin HEAD:refs/for/master
```
## 如果还是不行
可能需要检查服务器端的 HTTP 认证配置。请告诉我具体的错误信息,我会继续排查。