详细记录 Git HTTPS 请求日志 | AI生成和翻译

Home 2026.02

Question: 在运行 git pull –rebase 时,如何记录 HTTP 和 HTTPS 请求?

Answer:

你提供的示例输出显示的是 SSH 连接(Authenticated to github.com ([20.205.243.166]:22) using "publickey"),而不是 HTTP/HTTPS。当你的 remote URL 格式为 git@github.com:... 时,GitHub 默认使用 SSH。

要真正查看 HTTP/HTTPS 流量,你需要:

  1. 确保你使用的是 HTTPS remote(通常在看到密码/PAT 提示时使用)
  2. 启用 Git 内置的 curl(Git 用于处理 http/https 的工具)详细日志记录

检查当前的 remote URL

git remote -v

切换到 HTTPS(如果你想记录 HTTP/HTTPS 请求)

git remote set-url origin https://github.com/owner/repo.git
# 或者针对带 token 的 GitHub:https://username:ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/owner/repo.git

记录 HTTP/HTTPS 请求(使用 HTTPS remote 时)

在 git 命令前使用一个或多个环境变量:

# 最常用且最有效的组合 – 显示完整的 curl 详细输出(headers, TLS handshake 等)
GIT_CURL_VERBOSE=1 git pull --rebase

# 更详尽的信息(packet 层级 + curl + 常规 trace)
GIT_TRACE=1 GIT_TRACE_PACKET=1 GIT_CURL_VERBOSE=1 git pull --rebase

# 保存到文件(非常推荐)
GIT_CURL_VERBOSE=1 git pull --rebase 2>&1 | tee git-http.log

# 或者最大程度的调试
GIT_TRACE=1 GIT_TRACE_PACKET=1 GIT_TRACE_CURL=1 GIT_CURL_VERBOSE=1 git pull --rebase 2>&1 | tee git-debug.log

每个变量的作用

快速单行命令示例

# 快速查看 headers 和 TLS
GIT_CURL_VERBOSE=1 git pull --rebase

# 详细日志并保存到文件
GIT_TRACE=1 GIT_TRACE_PACKET=1 GIT_CURL_VERBOSE=1 git fetch --verbose 2>&1 | tee ~/git-network.log

如果你想记录 SSH 替代

对于 SSH 协议的日志记录:

GIT_SSH_COMMAND="ssh -vvv" git pull --rebase

或者更详细的级别:

GIT_SSH_COMMAND="ssh -vvvv" git pull --rebase 2>&1 | tee ssh-debug.log

当你的 remote 使用 https:// 时,请使用 GIT_CURL_VERBOSE=1 —— 这是查看 Git 发出的 HTTP 和 HTTPS 请求的标准方式。

References:


Back Donate