执行git pull与git push无响应且不提示输入密码是什么原因?
根因说明
git status仅操作本地仓库数据,无需和远程服务通信因此运行正常,pull/push无输出的问题均出在远程通信或认证环节,常见原因如下:
- 远程仓库地址配置错误,Git无法定位远程服务
- 凭证存储异常,失效的缓存凭证卡住认证流程,未触发密码输入提示
- 网络异常,代理配置失效、防火墙拦截SSH/HTTPS请求导致连接无响应
- Git客户端开启了静默输出配置,未打印运行日志
- SSH协议场景下私钥权限异常、未加载到ssh-agent中,认证流程卡住
排查解决步骤
- 第一步:校验远程仓库地址
执行git remote -v查看origin对应的远程地址是否正确,若地址填写错误,执行git remote set-url origin 【正确的仓库地址】修正后重试。 - 第二步:开启调试模式定位卡滞节点
若使用HTTPS协议连接仓库,执行GIT_CURL_VERBOSE=1 git pull -v打印通信全流程日志;若使用SSH协议连接仓库,执行GIT_SSH_COMMAND="ssh -v" git pull -v打印SSH认证日志,可直接定位到卡滞的具体环节。 - 第三步:修复凭证/密钥异常
- HTTPS协议场景:执行
git config --list | grep credential查看本地凭证存储规则,清空失效凭证即可:Windows系统前往「凭据管理器- Windows凭据」删除Git相关的缓存凭证,macOS系统前往「钥匙串访问」搜索仓库域名删除对应凭证,Linux系统删除~/.git-credentials文件中对应仓库的条目即可触发重新输入密码。 - SSH协议场景:检查本地私钥文件权限需为600(执行
chmod 600 ~/.ssh/【私钥文件名】修正),再执行ssh-add ~/.ssh/【私钥文件名】将密钥加载到ssh-agent中。
- HTTPS协议场景:执行
- 第四步:排查网络配置
执行git config --list | grep proxy查看是否配置了Git代理,若代理已失效,执行git config --global --unset http.proxy、git config --global --unset https.proxy清除代理配置后重试;同时确认防火墙未拦截仓库服务的443(HTTPS)或22(SSH)端口。 - 第五步:检查输出配置
执行git config --list | grep quiet确认是否开启了全局静默输出,若存在相关配置直接删除即可,也可每次执行pull/push时添加-v参数强制开启详细日志输出。
内容的提问来源于stack exchange,提问作者Oscar Vardela
相关产品推荐
相关产品推荐

