Win10环境Git Bash执行git push到GitHub远程仓库永久卡住问题求助
基础环境
- Windows 10 系统
- 使用Git Bash,Git版本为2.32.0.windows.1
- 未使用代理等特殊网络工具
- 已了解master/main分支命名差异并完成适配
问题背景
我是Git新用户,此前从未接触过版本控制系统,身边也没有可以请教演示的人,全程自学Git操作。跟着教程实操时,除了推送到远程仓库的步骤外,其余操作都能顺利完成,唯独推送时会一直卡住无响应,也没有任何报错提示,搜索了同类问题都没能解决。
已成功完成的操作包括:创建第一个本地仓库、生成测试文件(随便找了个带文本的PCB CAD程序脚本,内容不影响操作)、创建分支、提交内容到本地分支,所有操作都正常运行,对应逻辑我也能理解。
问题排查过程
初始排查
给push命令加了--verbose参数,执行命令如下:
$ git push -u --verbose origin main Pushing to https://github.com/ellectroid/test_public_repository.git
命令执行后永久卡住,无任何有效信息输出。尝试切换http和https协议,均无效果。
我浏览器端已经登录了GitHub账号,但Git Bash从未弹出任何认证相关提示,我不清楚如何完成Git操作对应的身份认证,学习的教程里也没有提到这一步的操作。
更新1:首次出现明确报错
第二天再次尝试push操作时,弹出了窗口标题为openSSH的Git GUI窗口,要求输入GitHub用户名,输入内容全部显示为星号,输入我的GitHub用户名ellectroid后,弹出“应用程序错误”窗口,提示Error: error writing "stdout": broken pipe,详细错误信息如下:
error writing "stdout": broken pipe error writing "stdout": broken pipe while executing "puts $::answer" (procedure "finish" line 14) invoked from within "finish" invoked from within ".b.ok invoke" ("uplevel" body line 1) invoked from within "uplevel #0 [list $w invoke]" (procedure "tk::ButtonUp" line 24) invoked from within "tk::ButtonUp .b.ok" (command bound to event)
更新2:配置文件确认
本地仓库.git隐藏文件夹下的无后缀config文件内容如下:
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = https://github.com/ellectroid/test_public_repository.git fetch = +refs/heads/*:refs/remotes/origin/* [remote "origin2"] url = http://github.com/ellectroid/test_public_repository.git fetch = +refs/heads/*:refs/remotes/origin2/*
尝试使用origin2走http协议推送,依然在Git GUI OpenSSH窗口做GitHub认证时弹出相同的broken pipe错误。
最终解决方案
不在Git Bash中执行push操作,改用带管理员权限的Windows CMD执行,执行push后会立即提示使用Personal Access Token认证,输入此前已生成的令牌后推送成功。后续我将bash路径添加到了环境变量PATH中,即可在CMD中输入bash调用带彩色输出的Git Bash,问题完全解决。
内容的提问来源于stack exchange,提问作者Ilya

