当向Github推送时,Git push卡住了?

185
每次我尝试推送到GitHub时,Git push都会挂起。我正在使用Cygwin和Windows 7。Git在本地跟踪分支、提供状态、设置全局用户名称和用户电子邮件以及允许提交等方面都很正常。我还是新手,正在学习。
我输入"git push"、"git push origin master"或"git push -u origin master",但什么也没有,只有一个空白行需要我使用ctl-c才能回到提示符。
"ssh-keygen -t rsa -C 'me@example.com'"要求我输入文件名并挂起。
"git push heroku master"也挂起了。
"$ git status"返回"On branch master nothing to commit, working directory clean"。
"$ git pull"返回"Already up to date"。
"$ git remote -v"返回:
heroku  git@heroku.com:myherokusite.git (fetch)

heroku  git@heroku.com:myherokusite.git (push) origin  

https://github.com/gitusername/appname.git (fetch) origin  

https://github.com/gitusername/appname.git (push)

or the correct ssh remote settings are returned when trying this with ssh

更新:使用SSH URL git@github.com:gitusername/gitrepo.git 也会卡住。

git remote set-url origin https://github.com/gitusername/appname.git 是正确的。

更新:我可以看到在卡住时Windows任务管理器中运行的git进程。

我尝试过:

使用不同的互联网连接位置

在https和ssh之间切换,但都会卡住

卸载git。从https://code.google.com/p/msysgit/downloads/list重新安装

卸载git。安装Cygwin的git

卸载git。安装Github for Windows GUI应用程序,我能够推送。但是这个应用程序功能有限,迫使我离开Cygwin窗口进入另一个应用程序,然后迫使我进入Windows命令提示符以获取完整功能,而我原本以为已经通过使用Cygwin逃脱了这种情况。

花费了很多很多时间来解决这个问题,在此之前它一直没有出现过,谢谢。

2014年4月更新:我重建了整个机器Win 7,Cygwin等,现在一切都正常了。


5
你是否在防火墙或代理后面? - Guillaume Darmont
我尝试了不同的互联网连接,但都没有成功,是的,我有杀毒软件,之前从未出现过问题。没有代理。 - Matt Singer
6
有运气吗?我正在使用cygwin时遇到了同样的问题。解决方法:如果我使用本地的Windows shell (cmd.exe),git push origin master 就可以正常工作。 - skilbjo
6
重启电脑对我有帮助。 - ktamas
3
我必须注销VPN。 - 42n4
显示剩余5条评论
39个回答

2

如果它卡住了,你将无法使用命令行。 - James Hubert

1
增加超时设置:
您可以增加Git的超时设置,以便允许更长时间的操作。这可以通过设置http.postBuffer和http.lowSpeedLimit配置值来实现:
git config --global http.postBuffer 524288000 # Set to a large value (e.g., 500 MB)
git config --global http.lowSpeedLimit 0

1
这是在这个页面上几个答案中唯一对我有效的东西。 - undefined

1
我想知道它是否与我所遇到的问题相同...
  1. 进入Putty
  2. 在“保存的会话”中点击“默认设置”,点击“加载”
  3. 转到“连接”->“SSH”->“错误”
  4. 将“对PuTTY的SSH-2'winadj'请求进行阻塞”设置为On(而不是Auto)
  5. 返回树视图中的“会话”(列表顶部)
  6. 在“保存的会话”框中点击“默认设置”,点击“保存”。

这个(几乎逐字地)来自:

https://tortoisegit.org/issue/1880


1
在我的情况下,问题是有一些进程锁定了我的钥匙串访问...

强制退出所有其他应用程序,确保您的Mac上的钥匙串访问没有被锁定


这在我的情况下是个问题。幸运的是,git push 对多个远程仓库都卡住了,所以我知道远程服务器没有问题。 - Luka Ramishvili

1
我是新手。我设法解决了关于挂起的git push命令的问题。
我最近安装了Git SCM。在其中一个安装选项中,我选择使用Git凭据管理器核心。我认为它已经自动安装了。但看起来安装过程中出现了错误。我从网站重新安装了Git凭据管理器核心,现在它完美地工作了。

1
  • 执行git reset HEAD^,这将撤消您的提交
  • 分别再次推送

0

我曾经面临过同样的问题。
我使用Github桌面版进行正常操作,可以推送或拉取,但不支持强制推送。当我尝试进行一些变基工作时,它总是无法强制推送。
我尝试添加core.askpass,配置代理,但都没有起作用。 最后,我决定观察Github桌面版的日志,并发现它使用以下命令进行推送:

git -c credential.helper= -c protocol.version=2 push origin

我尝试使用强制标志运行它,它起作用了,最后它要求我输入用户名和密码。
我不确定是哪个配置让它工作的,但我认为这可能有所帮助。

编辑: 我尝试从这里安装manager-core并且我能够推送。 看起来manager-core没有正确安装。


0
在我的情况下,git 尝试使用 IPv6 而不是 IPv4 来验证 github,导致我的终端卡在这里:set_sock_tos: set socket 3 IPV6_TCLASS 0x48
为了解决这个问题,我在~/.ssh/config中添加了 AddressFamily 选项。
Host github.com
  Hostname github.com
  AddressFamily inet 
  IdentityFile ~/.ssh/id_rsa  

测试命令:

ssh -vT git@github.com


0

我在Android Studio中遇到了这个问题。
实际上,在git push时,进度条一直在运行,但没有任何反应;
我曾经使用token来推送代码;

以下是我所做的:

  1. 在Android Studio中打开终端。
  2. 输入
git push
  1. 当GUI要求输入电子邮件和密码时,我关闭了对话框。
  2. 之后在终端上提示我输入用户名,所以我输入了它。
  3. 然后我被要求输入密码,但我输入了访问令牌而不是密码。
git push
Logon failed, use ctrl+c to cancel basic credential prompt.
Username for 'https://github.com': abcxyz
Password for 'https://abcxyz@github.com': ____

就这样。


0
面对相同的问题,尝试了几种解决方案,然后 -
在VS code的集成终端上尝试了"git push"命令,然后立即弹出了一个git凭据授权弹窗,其中包含"在浏览器中打开"选项,然后在Chrome上提供了GitHub的用户名和密码, 代码成功推送了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接