Git

Git使用与代理

为什么我的Git总是用不了?

Posted by Marlin on August 14, 2025

本文借助 Roo Code Agent 自动排查并修正了我的 Git 配置,最终由它汇总整理成文。

Git 使用与代理

在使用 Git 时,特别是在某些网络环境下,我们可能需要配置代理才能正常访问远程仓库(如 GitHub)。本文将介绍如何正确配置 Git 代理以解决连接问题。 通常这种情况可以通过使用 GitHub Desktop 软件来解决,但是,如果使用命令行,则需要手动配置代理。

问题背景

很多开发者在命令行或 VS Code 里连不上 GitHub,是因为它们最终都调用本机的 git.exe,而 Git 只认显式配置的代理(http.proxy、环境变量或 ~/.gitconfig)。

相比之下,GitHub Desktop 会自动读取操作系统的代理设置(通常被梯子/加速器改成 127.0.0.1:端口)。因此,只要在 Git 层手动配置相同的代理地址,就能让命令行和 VS Code 一并恢复正常。

解决方案

1. 确定代理信息

首先,您需要获取以下代理信息:

  • 代理类型(HTTP 或 SOCKS5)
  • 代理地址(通常是 localhost 或 127.0.0.1)
  • 代理端口(如 1080、7890、10810 等)

2. 配置 Git 代理

根据我们的实践,推荐使用 HTTP 代理配置,因为 Git 对 HTTP 代理的支持更稳定:

1
2
3
4
5
# 配置 HTTP 代理
git config --global http.proxy http://127.0.0.1:端口号

# 配置 HTTPS 代理
git config --global https.proxy http://127.0.0.1:端口号

例如,如果您的代理端口是 10810,则命令为:

1
2
git config --global http.proxy http://127.0.0.1:10810
git config --global https.proxy http://127.0.0.1:10810

3. 验证配置是否生效

配置完成后,可以通过以下命令验证代理是否正常工作:

1
git ls-remote https://github.com/git/git.git HEAD

如果命令成功返回类似以下内容,则表示代理配置成功:

1
724518f3884d8707c5f51428ba98c115818229b8	HEAD

您也可以尝试克隆一个仓库来测试:

1
git clone https://github.com/username/repository.git

4. 清除代理配置

如果将来不再需要使用代理,可以通过以下命令清除代理设置:

1
2
3
4
5
# 清除 HTTP 代理配置
git config --global --unset http.proxy

# 清除 HTTPS 代理配置
git config --global --unset https.proxy

注意事项

  1. 代理类型选择:虽然很多代理工具声称支持 SOCKS5,但在实际使用中,Git 对 HTTP 代理的支持更加稳定。如果 SOCKS5 配置无法工作,建议尝试 HTTP 代理配置。

  2. 端口确认:不同的代理工具可能使用不同的端口,请确保使用正确的端口号。

  3. 代理工具状态:配置代理前,请确保您的代理工具已经启动并正常运行。

  4. 配置查看:可以通过以下命令查看当前的 Git 配置:

    1
    
    git config --global --list
    

常见问题

1. 配置后仍然无法连接

  • 检查代理工具是否正常运行
  • 确认端口号是否正确
  • 尝试更换代理类型(从 SOCKS5 改为 HTTP)

2. 提示证书错误

  • 可以通过以下命令临时跳过 SSL 验证(仅建议在测试时使用):
    1
    
    git config --global http.sslVerify false
    

总结

通过正确配置 Git 代理,我们可以解决因网络限制导致的 Git 连接问题。关键在于选择合适的代理类型和正确的端口号,并通过命令验证配置是否生效。希望本文能帮助您解决 Git 代理配置问题,让您能够顺畅地使用 Git 进行版本控制。

我的配置文件

以下是我的.gitconfig 文件(C:/Users/30428/.gitconfig),希望能为你参考。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[user]
	name = Marlin
	email = Marlin_Phone@outlook.com
[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
[safe]
	directory = C:/Users/30428/blog/.deploy_git
[http]
	proxy = http://127.0.0.1:10810
[https]
	proxy = http://127.0.0.1:10810