当推送到Github时,Git push会挂起吗?

时间:2013-06-03 21:29:49

标签: git github cygwin hang git-push

每当我尝试推送到github时,Git push就会挂起。我正在使用Cygwin和Windows 7. Git函数可以在本地跟踪分支,提供状态,设置全局user.name和user.email以及允许提交。

我还是新手并且在学习。

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

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

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

我试过了:

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

在https和ssh之间切换并挂起

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

卸载了git。安装了Cygwin的git

卸载了git。安装Github for Windows GUI应用程序,它我能够推动。但是这个应用程序的功能有限,迫使我从我的Cygwin窗口进入另一个应用程序,然后强制我进入Windows命令提示符以获得完整功能,我认为我已经使用Cygwin逃脱了。

花了很多时间试图解决这个问题,它之前完美无缺,谢谢。

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

31 个答案:

答案 0 :(得分:57)

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

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

答案 1 :(得分:23)

尝试创建一个类似~/sshv.sh的脚本,它会显示ssh的内容:

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

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

chmod u+x ~/sshv.sh

然后使用:

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

在我的情况下,这帮助我弄清楚我正在使用需要关闭的ssh共享连接,所以我杀死了那些ssh进程并开始工作。

答案 2 :(得分:23)

尝试GIT_CURL_VERBOSE = 1 git push ...可能由于代理设置而发生git将试图通过代理服务器到达github.com而代理没有响应。使用GIT_CURL_VERBOSE = 1将显示IP地址和一些信息。你可以比较ip地址和命令输出“host www.github.com”的ip地址。如果它们不同,那么您可以制作https_proxy =“”并再试一次。

答案 3 :(得分:9)

我有同样的问题,完全相同的症状......我正要在绝望中重建我的整个系统))。

我甚至很天真地尝试git config --global core.askpass "git-gui--askpass",就像有人在这里建议的那样,但它没有用...... git push仍在冻结......

但后来我发现我的SSH代理有错误。所以我重新启动了ssh-agent和...... PROFIT

结论:当您遇到ssh连接问题时,请务必检查您的SSH代理和SSHD服务器...我很确定这是您的问题(这就是为什么它在重新安装系统后有效)

答案 4 :(得分:6)

如果你使用cygwin git或外部git(即github),它值得检查。

如果whereis git仅返回/cygdrive/c/Program Files (x86)/Git/cmd/git.exe或类似的安装cygwin git软件包,那么这就解决了我的问题。

答案 5 :(得分:6)

使用“命令提示符”(cmd)而不是 git bash 进行初始推送解决了我的挂断问题。从那以后我使用 git bash 没有任何问题。

答案 6 :(得分:4)

尝试以下方法;

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

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

答案 7 :(得分:3)

我认为我的Git Windows屏幕已经被击中,但实际上它后面有一个提示符号。检查它并输入您的凭据就是这样。

答案 8 :(得分:2)

我有同样的问题。 不要担心并寻找无穷无尽的复杂解决方案 只需删除git并重新安装即可。

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

多数民众赞成。它现在应该工作

答案 9 :(得分:2)

在可能的情况下,cPanel(我的遥控器)上的新公钥尚未授权。 我的客户是一台运行 Ubuntu 2020-04 的新机器

git push origin

...工作正常,但提示输入 cPanel 密码。

我假设 git-gui 进程在等待我无法输入的密码时挂起。

授权我的新密钥 git-gui 工作后。它确实提示输入密钥库密码。

答案 10 :(得分:1)

当我的计算机磁盘空间已满时,就会发生这种情况。删除一些文件&清空要修理的垃圾。

答案 11 :(得分:1)

就我而言,问题是有一些进程锁定了我的钥匙串访问权限......

强制退出所有其他应用以确保您的Mac上未锁定钥匙串访问权

答案 12 :(得分:1)

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

配置不存在的远程存储库也可能导致此行为 - 我最近发现意外地将我的来源网址更改为githu.com

答案 13 :(得分:1)

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

答案 14 :(得分:1)

我是新手。我设法解决了有关挂起 git push 命令的问题。

我最近安装了 git scm。在安装选项之一中,我选择使用 git 凭证管理器核心。我以为它是自动安装的。但看起来那个安装有错误。我从 website 重新安装了 git 凭证管理器核心,现在它运行良好。

答案 15 :(得分:1)

重新启动ssh代理!

killall ssh-agent; eval `ssh-agent`

答案 16 :(得分:1)

因此,当您键入并输入 git pish-u origin 时,应弹出要求您提供凭据的 GUI。就我而言,在输入 git pish-u origin 后,没有任何反应,直到查看我的任务管理器并发现正在运行的东西,我确信应该弹出来询问您的凭据的 GUI。我决定结束它的任务。我原以为它会在我的 gitbash 上显示错误,但该死的 GUI 终于出现了,我终于能够进步了。

答案 17 :(得分:0)

使用 Git CMD,而不是 Cygwin Bash 终端。

通过使用 Git CMD,我的系统能够验证我在 GitHub 上的信息。之后,使用 bash 工作正常。我知道程序试图进行某种身份验证,但由于某种原因无法从 bash 终端进行。虽然这个答案并不全面,但它确实完成了工作。

答案 18 :(得分:0)

我的解决方案是(挂起)重启我的路由器。

我排除了一切,然后尝试使用移动热点并且推送发生了。?

答案 19 :(得分:0)

好吧,我使用的是 Git Bash,无论我尝试什么,它都不适合我。切换到 Visual Studio Code 的终端,它正在工作。 关闭 Git Bash 并重新打开,瞧,它开始工作了!

答案 20 :(得分:0)

我遇到了同样的问题。
我使用 Github 桌面进行正常操作,它可以推或拉,但它不支持强制推送,当我尝试做一些 rebase 工作时,它总是无法强制推送。
我尝试添加 core.askpass,配置代理但都不起作用。 最后我决定看一下 Github 桌面的日志,我发现它使用下面的命令来推送:

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

我用强制标志尝试了这个,它工作,它终于问我用户名和密码。
我不确定哪种配置使它起作用,但我认为这可能会有所帮助。

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

答案 21 :(得分:0)

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

  1. 进入Putty
  2. 点击已保存的会话中的“默认设置”。单击“加载”
  3. 转到连接 - > SSH - >虫子
  4. 将“PuTTY的SSH-2'winadj'请求上的”扼流圈“设为开(而不是自动)
  5. 返回树视图中的会话(列表顶部)
  6. 点击“已保存的会话”框中的“默认设置”。单击“保存”。
  7. 这(几乎是逐字)来自:

    https://tortoisegit.org/issue/1880

答案 22 :(得分:0)

这可能适用于其他 Windows 设置(我在 Windows 7 Pro 32 位 BTW 上遇到了这个问题,并试图推送到 Bitbucket,而不是 Github)。

我尝试重新安装 Git 并摆弄安装程序配置。

让它在 OpenSSH 设置被忽略的情况下工作,并在选择凭据管理器时选择 不使用一个,这可能是在其他答案中解释的 SSH 代理在 GNU/Linux 上被调用的内容,所以挂起可能是由于等待一个假设不可用的 Windows 凭据管理器响应。

答案 23 :(得分:0)

我花了几个小时试图解决这个问题,但没有一个建议奏效。出于沮丧,我将整个项目移动到一个备份文件夹,重新克隆一个新的,然后从备份文件夹复制我的文件。有效!!。我怀疑我的问题是我提交的 node_module 最初没有被排除在 .gitignore 中,并且从缓存中删除没有帮助/工作。当我从新开始时,文件大小与之前的文件相比只是一小部分。

答案 24 :(得分:0)

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

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

  2. git config --global http.postBuffer 524288000

  

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

答案 27 :(得分:0)

我有两个存储库,将其中一个存储库工作正常。因此,我比较了他们的.git/config。没有工作的人最后有:

[http]
    sslVerify = false

工作的人改为:

[credential]
    helper = store

更改.git/config解决了这个问题。

答案 28 :(得分:0)

我还有一个问题,git挂在Windows 7上的“编写对象”部分(使用msysgit,来自git的默认Windows客户端),这是我在google中获得的第一个命中,所以我也会发布我的回答这里。

git config --global core.askpass "git-gui--askpass"无法正常工作,但经过一些研究后,我发现Git push halts on "Writing Objects: 100%"上的提示使用了git config –global sendpack.sideband false,效果非常好。

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

答案 29 :(得分:0)

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

如果您有耐心并让文件完成上传,您可能根本不需要做任何事情。祝你好运 -

答案 30 :(得分:-1)

这对我来说,这是我如何修复。我使用了Cygwin并且它被绞死所以我尝试在提交时提示输入用户名/密码:

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

一旦我执行了git push -u origin master并输入了用户名密码,它仍然挂起但似乎已经提交给GitHub。

在dos提示符下使用了相同的命令:git push -u origin master Git没有挂起。所以在我的案例中也许与CygWin有关。