103

每次我尝试推送到 github 时,Git push 都会挂起。我正在使用 Cygwin 和 Windows 7。Git 在本地跟踪分支、提供状态、设置全局 user.name 和 user.email 并允许提交的功能很好。

我还是新手,还在学习。

我输入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 urlgit@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 逃脱了。

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

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

4

27 回答 27

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

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

于 2013-10-06T02:22:55.010 回答
40

尝试创建一个这样的脚本~/sshv.sh将向您展示 ssh 的用途:

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

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

chmod u+x ~/sshv.sh

然后调用你git push的:

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

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

于 2013-09-16T17:52:10.907 回答
34

尝试 GIT_CURL_VERBOSE=1 git push

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

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

于 2013-06-09T19:27:41.053 回答
21

重新启动您的 ssh 代理!

killall ssh-agent; eval `ssh-agent`
于 2019-11-20T19:39:46.500 回答
17

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

于 2021-06-19T17:12:26.447 回答
13

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

我什至太天真地尝试git config --global core.askpass "git-gui--askpass"了一些人在这里建议的尝试,但它没有奏效…… git push仍然冻结……

但后来我发现我的 SSH 代理有错误。所以我重新启动了 ssh-agent 并且…… 利润

结论:当您遇到 ssh 连接问题时,请务必检查您的 SSH 代理和 SSHD 服务器……我很确定这是您的问题(这就是重新安装系统后它起作用的原因)

于 2015-09-26T01:52:45.923 回答
8

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

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

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

于 2018-01-10T11:12:17.490 回答
6

如果您使用的是 cygwin git 或外部 git(即 github),则值得检查。

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

于 2013-12-14T17:33:12.710 回答
5

就我而言,问题是似乎不再支持 https,我不得不将所有来源从旧的https://github.com/username/myrepo切换到 git@github.com:username/myrepo.git。

我做了这个

git remote set-url origin git@github.com:username/myrepo.git
于 2021-11-11T22:03:34.907 回答
4

我以为我的 Git 窗口屏幕被击中了,但实际上后面有一个登录提示。检查它并输入您的凭据,就是这样。

于 2018-01-20T09:31:53.790 回答
3

对于自 2021/08/13 以来遇到此问题并发现此问题的任何人,这可能与 GitHub 上最近的身份验证策略更改有关。他们不再接受用户名/密码进行身份验证。

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

于 2021-08-17T20:59:59.237 回答
2

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

于 2015-09-23T23:44:45.707 回答
2

就我而言,cPanel(我的遥控器)上的新公钥尚未获得授权。我的客户是一台运行 Ubuntu 2020-04 的新机器

git push origin

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

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

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

于 2021-03-05T01:04:06.953 回答
1

我想知道是不是和我吃的一样...

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

这(几乎逐字)来自:

https://tortoisegit.org/issue/1880

于 2014-04-03T11:12:56.333 回答
1

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

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

于 2021-07-14T21:45:40.680 回答
1

我今天遇到了同样的问题,我为解决它所做的只是删除原点git remote remove origin 并重新添加它,git remote add origin https://github.com/username/project.git然后我就可以成功推送了。

于 2021-12-04T17:56:47.653 回答
1

因此,当您键入 & enter 时git pish-u origin,应弹出 GUI 询问您的凭据。在我的情况下,在输入 之后git pish-u origin,什么都没有发生,直到查看我的任务管理器并发现正在运行的东西,我确信应该弹出 GUI 来询问您的凭据。我决定结束它的任务。我原以为它会在我的 gitbash 上显示一个错误,但是,该死的 GUI 终于出现了,我终于能够继续前进了。

于 2021-06-17T17:14:30.800 回答
1

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

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

于 2016-10-27T18:55:29.643 回答
1

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

我最近安装了 git scm。在其中一个安装选项中,我选择使用 git credential manager core。我假设它是自动安装的。但看起来那个安装有错误。我从网站上重新安装了 git credential manager core ,它现在可以正常工作了。

于 2021-06-20T13:19:58.613 回答
1

当我的计算机磁盘空间已满时,这发生在我身上。删除一些文件并清空垃圾箱进行修复。

于 2015-12-15T16:11:17.487 回答
0

我有两个存储库,推送到其中一个运行良好。所以,我比较了他们的.git/config. 非工作的最后有:

[http]
    sslVerify = false

相反,工作的是:

[credential]
    helper = store

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

于 2018-11-12T15:01:52.863 回答
0

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

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

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

于 2021-06-15T19:56:00.527 回答
0

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

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

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

编辑:我试图从这里安装 manager-core并且我能够推送。似乎没有正确安装 manager-core。

于 2021-07-01T02:53:18.640 回答
0
  1. 有同样的问题。有点困惑,但问题是我在 root 上做了一个 git init --bare,这意味着你将无法推送,因为你没有任何权利。取而代之的是创建一个新用户,或者在我的情况下,我使用 Pi User 并在那里创建了 git init --bare,然后它就起作用了。

  2. git config --global http.postBuffer 524288000

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

于 2019-02-22T16:25:12.097 回答
0

如果您使用 Windows 凭据管理器,请使用 CMD 而不是 git Bash。然后,您可以添加身份验证方法以继续。这对我有用。

于 2021-09-15T17:14:26.053 回答
0

我还有一个问题,git 挂在 Windows 7 上的“Writing objects”部分(使用 msysgit,git 的默认 windows 客户端),这是我在 google 中获得的第一个点击,所以我也会在这里发布我的答案。

git config --global core.askpass "git-gui--askpass"不幸的是,没有工作,但经过一些研究,我发现在“写入对象:100%”上使用Git 推送停止的提示git config –global sendpack.sideband false非常有效。

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

于 2018-01-10T11:25:43.620 回答
0

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

于 2021-06-02T03:00:29.587 回答