推到Github时Git推挂了吗?


75

每当我尝试推送到github时,Git推送都会挂起。我正在使用Cygwin和Windows7。Git在本地跟踪分支,提供状态,设置全局user.name和user.email以及允许提交等方面的功能很好。

我还是新手,正在学习。

我输入git pushgit 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 URLgit@github.com:gitusername/gitrepo.git也会挂起

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

更新:挂起时,我可以看到Windows Task Manager中正在运行的git进程。

我试过了:

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

在https和ssh之间切换并挂起

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

卸载git。安装了Cygwin的git

卸载git。安装了适用于Windows GUI应用程序的Github,我可以推送它。但是此应用程序功能有限,迫使我退出Cygwin窗口进入另一个应用程序,然后又迫使我进入Windows命令提示符以获取完整的功能,我认为我已经通过使用Cygwin逃脱了。

花了很多小时试图解决这个问题,在此之前,它工作无误,谢谢。

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


2
您是在防火墙还是代理后面?
Guillaume Darmont

我尝试了不同的Internet连接,但没有成功,是的,我安装了以前从未造成问题的防病毒软件。没有代理。
马特·辛格

3
运气好的话?我在cygwin中遇到了同样的问题。修复:如果我使用本机Windows Shell(cmd.exe),git push origin master效果很好。
约翰·斯基尔贝克

2
对我来说,重启计算机很有帮助。
ktamas

当发生这种情况时,我发现删除~/.ssh/git@github.com:22.connection可解决问题(我在〜/ .ssh / config中有一些设置可以保持连接)。
erwaman

Answers:


63
git config --global core.askpass "git-gui--askpass"

这对我有用。只需输入您的登录凭据,提示可能需要3-5秒才能出现,您可以使用。


1
我运行了它,现在它一直在说error: cannot run git-gui--askpass: No such file or directory,请您给我建议如何解决这个问题?
hello_there_andy 2015年

2
@hello_there_andy,可能会对您有所帮助。
forloop

5
这条线对我没有任何帮助。空输出。
AlwaysLearning

2
运行此行后,问题仍未解决,现在推送时git一直在说error: cannot run git-gui--askpass: No such file or directory。@forloop添加的解决方案帮助我扭转了它。
塞巴斯蒂安·奥加尔德

31

尝试创建这样的脚本~/sshv.sh,它将向您显示ssh的功能:

#!/bin/bash
ssh -vvv "$@"

允许~/sshv.sh文件所有者执行文件:

chmod u+x ~/sshv.sh

然后使用以下命令调用您git push的:

GIT_SSH=~/sshv.sh git push ...

就我而言,这有助于我弄清楚我正在使用需要关闭的ssh共享连接,因此我杀死了那些ssh进程,它开始工作。


这对我非常有帮助-谢谢!
Allan Nienhuis 2014年

3
对于调试,它的简单加LogLevel DEBUG3~/.ssh/config
热雷米·勒萨热

1
我尝试过,git push -u origin master --verbose但即使这样也没有显示出任何有用的信息。阅读完此解决方案后,我将整个内容~/.ssh从旧的Linux PC复制到了Windows Cygwin64 home / user文件夹中,就像一个魅力一样。
Matteljay

谢谢。以我sudo systemctl restart sshd
为例

添加logLevel Debug3之后,是否需要重新加载ssh?由于客户端,我不这么认为。
Timo

27

尝试GIT_CURL_VERBOSE = 1 git push

...由于代理设置,您的问题可能会发生,例如,如果git试图通过代理服务器访问github.com且代理没有响应。

如果使用GIT_CURL_VERBOSE = 1,它将显示目标IP地址和一些信息。您可以将此IP地址与命令的输出进行比较host www.github.com。如果这些IP不同,则可以设置并重https_proxy=""试。


13

我有绝对相同症状的相同问题……我将在绝望中重建整个系统)。

我什至git config --global core.askpass "git-gui--askpass"像某些人建议的那样天真地尝试,但没有成功…… git push仍然被冻结……

但是后来我发现我的SSH代理出现错误。所以我重新启动了ssh-agent,然后…获利

结论:当您遇到ssh连接问题时,请务必检查SSH代理和SSHD服务器。


3
如何重新启动ssh-agent?我正在使用linux
Yan King Yin

我通过终止ssh-agent.exe进程来重新启动ssh-agent 。在Windows上,您可以使用ps -ef | grep ssh它来查找和kill消除它。重新启动可能更安全。@YanKingYin
ashes999 '16

1
@Yan King Yin 11月,我不确定linux,但是在Mac上我已经使用LaunchControl GUI或运行了它:sudo launchctl stop /System/Library/LaunchAgents/org.openbsd.ssh-agentand sudo launchctl start /System/Library/LaunchAgents/org.openbsd.ssh-agent...相当确定linux应该有类似于bsd启动的东西...像init-v或systemd方式停止/启动代理/守护程序的过程...您可以尝试使用此拼写:killall ssh-agent; eval $(ssh-agent)。让我知道它是否对您有用。
提请

谢谢,刚遇到这个问题,那也是我的ssh代理挂了!会采取了年龄找出自己
马丁DeMello

7

重新启动您的ssh代理!

killall ssh-agent; eval `ssh-agent`

2
就是那个!
EMon

1
当我的终端机无限期地挂起时,这对我也
起作用

它似乎会一次又一次地发生:(此命令有时会有所帮助,有时它仍然会停止。某些不正确的事
jones

是的,听起来不对。也许您应该将此命令放在bash配置文件中,以便每次加载终端时它将运行它。
jburtondev

6

值得检查是否使用cygwin git或外部git(即github)。

如果whereis git返回/cygdrive/c/Program Files (x86)/Git/cmd/git.exe最好的安装cygwin git软件包,则为我解决了这个问题。


5

尝试以下方法;

git config --global core.askpass“ git-gui--askpass”

这将提示输入凭据,如果凭据正确,则“推送”成功。


感谢你的回答。我配置core.askpass并安装了git-gui。但是奇怪的是,它甚至没有要求输入密码,而是在我这样做之后才推送更改!
Prahlad Yeri

5

我遇到过同样的问题。不必担心和搜索无穷复杂的解决方案,只需删除git并重新安装它即可。

sudo apt-get purge git
sudo apt-get autoremove
sudo apt-get install git

而已。现在应该可以工作了


这应该是答案,我正在使用ubuntu 20(距离您发表评论
已有

在Ubuntu 20.04中,这工作正常,谢谢@gustavz
Kushan Gunasekera


2

我只是想说我在AWS EC2实例上遇到这个问题。当我将EC2实例配置为仅允许来自负载平衡器的流量时,我试图从其实例中推送。我更改了规则以允许从任何地方都可以使用HTTP,但是它仍然不能解决问题。然后我意识到这是因为我的安全组被配置为不允许通过HTTPS来自我的EC2实例的出站流量。我没有允许HTTPS入站流量使其正常工作,即使您可以使用HTTPS入站可能是一个不错的策略。


1

当我的计算机的磁盘空间已满时,发生了这种情况。删除一些文件并清空垃圾桶以进行修复。


1

就我而言,问题在于某些进程已锁定我的钥匙串访问权限...

强制退出所有其他应用程序,以确保钥匙串访问未在Mac上锁定


这是我的问题。幸运的是,git push挂在了多个远程服务器上,所以我知道远程服务器没有问题。
卢卡·拉米什维利

1

为了完整起见(有时这样的问题并不像看起来那样复杂):

配置不存在的远程存储库也可能导致此行为-我最近偶然发现将我的原始URL更改为githu.com


同样在这里...。我已经在远程配置中忘记了一个用户。(只是server.com:/srv/git/repo.git代替的git@server.com:/srv/git/repo.git。不幸的是SSH不抱怨或失败,它只是挂起奇怪的是,git pull这个配置而不是推动工作。
罗伯特·卡尔·

git pull可能不需要用户(不受进一步限制时可与每个用户一起使用),而git push……
Michael Trojanek,

1

我想知道这是否和我一样...

  1. 腻子
  2. 在已保存的会话中单击“默认设置”。点击加载
  3. 转到连接-> SSH->错误
  4. 将“ PuTTY的SSH-2'winadj'请求的阻塞”设置为“开”(而不是“自动”)
  5. 在树状视图中返回“会话”(列表顶部)
  6. 在“保存的会话”框中单击“默认设置”。单击保存。

(几乎逐字)来自:

https://tortoisegit.org/issue/1880


0

当推送大量文件时,通常会看到自己遇到此问题。

如果您耐心等待并且让文件完成上传,则可能根本不需要执行任何操作。祝好运 -


0

我还遇到了一个问题,即git挂在Windows 7上的“书写对象”部分上(使用msysgit,这是git的默认Windows客户端),这是我在google上获得的第一笔成功,因此我还将在这里发布我的答案。

git config --global core.askpass "git-gui--askpass"并没有不幸地起作用,但是经过一番研究,我发现Git的提示中止了“ Writing Objects:100%”以供使用git config –global sendpack.sideband false其完美。

我终于可以再次从命令行推送了!


0

我有两个存储库,将其中的一个推入其中就可以了。因此,我比较了他们.git/config。不工作的人最后有:

[http]
    sslVerify = false

工作的人改为:

[credential]
    helper = store

改变.git/config解决了问题。


0
  1. 有同样的问题。有点困惑,但是事情是我做了一个git init –裸露在root上,这意味着您将因为没有任何权限而无法推送。而是创建一个新用户,或者在我的情况下,我使用Pi User并在其中设置了git init --bare,然后在以后工作了。

  2. git config --global http.postBuffer 524288000

将数据发布到远程系统时,智能HTTP传输使用的缓冲区的最大大小(以字节为单位)。对于大于此缓冲区大小的请求,将使用HTTP / 1.1和Transfer-Encoding:chunked来避免在本地创建大型打包文件。默认值为1 MiB,足以应付大多数请求。


0

我有同样的问题。所有访问远程git存储库的git命令都已挂起。我忘记了更改虚拟机网络设置。一旦将其更改回NAT(与以前一样),他们便开始工作。这不是git的问题,而是网络本身的问题。


0

另一个原因可能是git服务器已达到其资源限制,并且本地git设置没有问题。


-1

这发生在我身上,这是我固定的方式。我使用Cygwin并挂起,因此我尝试在提交时提示输入用户名/密码:

git config --global core.askpass "git-gui--askpass"

执行git push -u origin master并输入用户名密码后,它仍然挂起,但似乎提交到GitHub。

在dos提示符下使用了相同的命令: git push -u origin master Git不会挂起。因此,在我的情况下,可能与CygWin有关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.