skip to content
斑斓的博客

Git代理设置

/ 4 min read

1.临时代理设置

只对当前命令行会话生效,命令行窗口关闭后失效

命令: 在Linux下,命令行窗口内执行:

export http_proxy=http://代理服务器地址:端口号 #比如export http_proxy=http://127.0.0.1:7890
export https_proxy=http://代理服务器地址:端口号
# 如果代理服务器需要用户名和密码
# export http_proxy=http://用户名:密码@代理服务器地址:端口号
# export https_proxy=http://用户名:密码@代理服务器地址:端口号

在Windows下,命令行窗口内执行:

$env:http_proxy = "http://127.0.0.1:7890"
$env:https_proxy = "http://127.0.0.1:7890"

对于GitHub push的话,一般不会生效,直接指定:

git -c http.proxy="http://127.0.0.1:7890" push

验证:

# 查看当前会话的 HTTP/HTTPS 代理设置
Get-ChildItem Env: | Where-Object { $_.Name -match "proxy" }
# 或直接输出
echo "HTTP_PROXY: $env:http_proxy"
echo "HTTPS_PROXY: $env:https_proxy"

取消临时代理:

unset http_proxy
unset https_proxy

2.永久全局代理设置

对所有Git操作生效,永久有效(除非手动修改)

命令:

git config --global http.proxy http://代理服务器地址:端口号
git config --global https.proxy http://代理服务器地址:端口号
# 如果代理服务器需要用户名和密码
# git config --global http.proxy http://用户名:密码@代理服务器地址:端口号
# git config --global https.proxy http://用户名:密码@代理服务器地址:端口号

查看全局代理设置:

git config --global --get http.proxy
git config --global --get https.proxy

取消全局代理设置:

git config --global --unset http.proxy
git config --global --unset https.proxy

存储位置:“C:\Users\banlan.gitconfig”,可通过文本编辑器自行修改

3.与系统环境变量的区别

系统->高级系统设置->环境变量->系统变量

三者的区别和关系

特性Git 全局配置临时环境变量系统环境变量
存储位置~/.gitconfig仅在当前会话有效操作系统相关
优先级最高 (Git 优先使用自己的配置)最低 (除非没有其他配置)
作用范围仅影响 Git 命令仅影响当前 shell 会话影响所有使用系统代理的程序
持久性永久 (除非手动修改)临时, 关闭 shell 失效永久 (除非手动修改)

关系:

  • Git 首先会检查自己的全局配置 (~/.gitconfig) 中是否设置了代理。 如果设置了,就使用 Git 全局配置。
  • 如果没有设置 Git 全局代理,Git 可能会检查临时环境变量 (http_proxy, https_proxy)。
  • 如果临时环境变量也没有设置,Git 有时 (不总是) 会尝试使用系统环境变量。 但这种依赖性并不稳定,不推荐依赖系统环境变量来设置 Git 代理。

总结:

  • 优先级: Git 全局配置 > 临时环境变量 > 系统环境变量 (一般来说)。
  • 最佳实践: 推荐使用 Git 全局配置来设置 Git 代理。 如果只需要临时使用代理,可以使用临时环境变量。 避免依赖系统环境变量来配置 Git 代理。