Git push 通过代理收到 HTTP 417
HTTP 417 表示某个期望未得到满足。在更改凭据或增大 Git 缓冲区设置之前,先确定是谁发出了该响应。
一个很小的 Git 操作能正常工作,另一个却返回 HTTP 417。这个状态并不等同于“代理密码被拒绝”。
HTTP 把 417 定义为期望失败。带有 Expect 字段的请求可能遇到无法满足该期望的服务器或中间环节。100-continue 交换解释了在上传主体发出之前的判断过程。
弄清是哪个组件发出了响应,以及请求里包含什么。经过仔细脱敏的 Git HTTP 跟踪记录和代理端对应的日志条目,比根据提交大小去猜测更有用。
如果内部仓库应当走直连路由,就有意识地修正那条路由策略。如果它必须使用代理,就调查这条路径的兼容性。删掉所有代理设置也许能通过改走另一条路径来掩盖症状,却无法解释失败原因。
同样,http.postBuffer 也不是代理错误的万能解药。在修改之前,先用 Git 配置参考了解这个选项。数字形式的 HTTP 状态、请求所处的阶段,以及返回它的组件,应当决定下一步。