Git 推送到 Github 时挂起?

每次我试图推到 github,Git push 都会挂起来。我正在使用 Cygwin 和 Windows 7。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挂起

返回 On branch master nothing to commit, working directory clean

返回 Already up to date

返回:

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。为 Windows GUI 应用程序安装了 Github,我可以推送它。但是这个应用程序的功能有限,迫使我离开我的 Cygwin 窗口进入另一个应用程序,然后迫使我进入一个完整功能的命令提示符,我以为我已经逃脱了使用 Cygwin。

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

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

194622 次浏览

尝试 GIT _ CURL _ VERBOSE = 1 GIT push

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

使用 GIT _ CURL _ VERBOSE = 1,它将显示目标 IP 地址和一些信息。您可以将这个 IP 地址与命令 host www.github.com的输出进行比较。如果这些 IP 是不同的,那么您可以设置 https_proxy="",然后再试一次。

尝试创建一个像 ~/sshv.sh这样的脚本,它将向您展示 ssh 的目的:

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

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

chmod u+x ~/sshv.sh

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

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

在我的例子中,这帮助我发现我正在使用需要关闭的 ssh 共享连接,所以我关闭了这些 ssh 进程,它开始工作了。

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

这招对我很管用。它可能需要3-5秒的提示出现,只要输入您的登录证书,你就可以去。

如果您正在使用 cygwin git 或外部 git (即 github) ,那么值得检查一下。

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

我在想这是不是和我以前..。

  1. 进入油灰
  2. 在保存的会话中点击“默认设置”。点击加载
  3. 转到 Connection-> SSH-> Bug
  4. 设置“ Chokes On PuTTY’s SSH-2‘ winadj’request”为 On (而不是 Auto)
  5. 返回到树视图中的 Session (列表的顶部)
  6. 单击“保存会话”框中的“默认设置”。单击“保存”。

这句话(几乎一字不差)来自:

Https://tortoisegit.org/issue/1880

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

我也有同样的问题,但症状完全相同... ... 我在绝望中准备重建我的整个系统))。我也试过 git config --global core.askpass "git-gui--askpass",但是没有用。

解决方案是重新启动 ssh-agent:

launchctl stop /System/Library/LaunchAgents/org.openbsd.ssh-agent


launchctl start /System/Library/LaunchAgents/org.openbsd.ssh-agent

如果需要,以 sudo作为前缀。

这发生在我的计算机磁盘空间已满的时候。删除一些文件并清空垃圾来修复。

在我的情况下,问题是有一些过程,锁定了我的钥匙链访问..。

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

我也有同样的问题。 停止担心和寻找无穷无尽的复杂的解决方案, 只要删除 git 并重新安装它。

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

就是这样,现在应该可以了

我还有一个问题,git 挂在 Windows 7的“写对象”部分(使用 msysgit,git 的默认窗口客户端) ,这是我在谷歌得到的第一个命中,所以我也将在这里张贴我的答案。

不幸的是,git config --global core.askpass "git-gui--askpass"没有工作,但经过一些研究后,我发现的提示 Git 按住“编写对象: 100%”使用 git config –global sendpack.sideband false工作得非常好。

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

我以为我的 Git 窗口屏幕被击中了,但实际上在它后面出现了一个提示符。检查一下,然后输入你的证件,就这样。

我有两个存储库,推送到其中一个工作正常。所以,我比较了他们的 .git/config。不工作的那个最后说:

[http]
sslVerify = false

正在工作的那个人选择了:

[credential]
helper = store

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

  1. 也有同样的问题。有点困惑,但问题是我做了一个 git init-,在 root 上是裸的,这意味着你不能推,因为你没有任何权限。取而代之的是创建一个新用户,或者在我的例子中,我使用了 Pi User 并且创建了 git init ——就在那里,然后它就工作了。

  2. git config --global http.postBuffer 524288000

将数据 POST 到远程系统时,智能 HTTP 传输使用的缓冲区的最大字节数。 对于大于这个缓冲区大小的请求,HTTP/1.1和 Transfer-Encoding: chunked 用于避免在本地创建大量包文件。默认值是1MiB,这对于大多数请求来说已经足够了。

重启你的 ssh 代理!

killall ssh-agent; eval `ssh-agent`

在我的例子中,cPanel (我的远程控制器)上的一个新公钥尚未被授权。 我的客户是一台运行 Ubuntu 2020-04的新机器

git push origin

成功了,但被提示输入 cPanel 密码。

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

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

我花了好几个小时试图解决这个问题,但所有的建议都不起作用。出于失望,我将整个项目移动到一个备份文件夹,重新克隆了一个新文件,然后从备份文件夹复制了我的文件。成功了!.我怀疑我的问题是我提交的 node _ module 没有被排除在。最初的 gitignore 和从缓存中删除没有帮助/工作。当我开始从新的文件大小是一个分数比较早期的。

这可能适用于其他的 窗户设置(顺便说一下,我在 Windows 7 Pro 32位上遇到过这个问题,并试图推广到 Bitbucket,而不是 Github)。

我尝试重新安装 Git 并修改安装程序配置。

在选择凭证管理器时,忽略 OpenSSH 设置并选择 不要用,这可能是 SSH 代理在其他答案中解释的在 GNU/Linux 上调用的方法,所以挂起可能是由于等待假定不可用的 Windows 凭证管理器响应。

因此,当你键入和输入 git pish-u origin,图形用户界面要求您的凭证应弹出。在我的例子中,在键入 git pish-u origin之后,什么都没有发生,直到查看我的任务管理器并找到一些正在运行的内容,我确信这些内容是应该弹出来询问您的凭据的 GUI。我决定结束它的任务。我本以为它会在我的 gitbash 上显示一个错误,但相反,该死的 GUI 终于出现了,我终于能够进步了。

使用“ Command Prompt”(cmd)而不是 git bash 作为初始推送解决了我的问题。从那时起,我使用 git bash 没有任何问题。

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

我最近安装了 git scm。在其中一个安装选项中,我选择使用 git 凭证管理器核心。我以为是自动安装的。但是看起来在那个安装中有一个错误。我从 网站重新安装了 git 凭证管理器核心,它现在工作得很完美。

我也面临着同样的问题。
我使用 Github 桌面的正常行动,它可以推或拉,但它不支持力推,当我试图做一些基础工作,它总是推力失败。
我尝试添加 core.askpass,配置代理,但都不工作。 最后我决定看看 Github 桌面的日志,我发现它使用下面的命令来推动:

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


我试了这个与强制旗帜和它的工作,它最后问我的用户名和密码。
我不确定哪种配置使它工作,但我认为这可能有帮助。

编辑: 我尝试从 给你安装管理器核心,我能够推。 似乎 Manager-core 没有正确安装。

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

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

对于自2021/08/13以来经历过这种情况并发现这个问题的人来说,这可能与 GitHub 上最近的认证策略变化有关。它们是用于认证的 不再接受用户名/密码

解决方案是 设置 ssh 访问创建个人访问令牌

如果您使用的是 Windows 凭证管理器,使用 CMD 代替 git Bash。然后您可以添加一个身份验证方法来继续。

对我来说,问题是 https 似乎不再受支持了,我不得不把原来的 https://github.com/username/myrepo改成 git@github.com: username/myrepo.git。

我这样做了

git remote set-url origin git@github.com:username/myrepo.git

今天我也遇到了同样的问题,我所做的就是移除原来的 git remote remove origin ,然后重新加入 git remote add origin https://github.com/username/project.git,这样我就可以成功的推进了。

有时候我在从 Android Studio 推送一个新分支时遇到这个挂起问题,它不会给出错误消息。通常,如果我做一个简单的 fetch从主要它将工作后。

在我的例子中,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

我在 andorid 工作室经历过这个。
实际上,在 git 推送时,进度条继续运行,没有发生任何事情;
我曾经使用标记推送代码; < br >

我是这么做的:

  1. 在安卓演播室打开终端。
  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': ____

瞧。

如果您在 VSCode中,那么也可能是 GitHub VSCode 扩展想要打开 GitHub 来登录。

如果你点击快速弹出窗口,那么所有连续的 git push都会卡住,即使你从 VSCode 终端执行它们。

解决方案: Close VSCode,在一个新窗口中再次打开项目根目录。当出现提示时,请跟随链接并登录。就是这样。

关闭 Virgin Media WebSafe 为我解决了这个问题。假设其他 ISP 也有类似的可切换安全功能。

对我来说,以上这些都不起作用。 我试过这个,很管用:

设置-上游原点主线

有时不会卡住。也许会有点挤。您可以使用此命令检查推送的进度。我觉得这个对某人有用。

git push --progress

了解更多关于如何查看 git 推送进度的信息: 我如何知道 git 推送完成的百分比?