冻结Git推送

在某些情况下,您可能会遇到这样的情况:您希望应用于远程repo(如GitHub, Gitlab, Bitbucket或任何其他托管的Git服务)的特定推送被冻结并且似乎没有发生任何事情。

虽然这可能不常见,但它可能会发生,而且很难弄清楚,尤其是对初学者来说。

在本教程中,我们将探讨导致“git push”冻结的各种原因,以及如何解决它以应用指定的push。

原因1:无效的远端URL

“git push”被冻结的原因有很多。但是,一个常见的问题是远程存储库的URL不正确。

要解决这个问题,请确保您正在推送到正确的远程URL。使用如下命令显示远端URL:

$ git remote show

如果需要替换远端URL,可以使用如下命令:

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

原因2:SSH Agent Error

这个错误的另一个原因是您的ssh代理有问题。这可能包括服务没有响应、出现错误等。

您可以通过尝试重新启动服务来解决此错误,如下所示:

$ killall ssh-agent;eval ssh-agent”

原因3:无效凭据

导致“git push”冻结的第三个潜在原因是您使用了不正确的凭据来访问主机服务。

要解决这个问题,你可以使用下面的命令重新登录Git托管服务:

$ git login

这提示您登录到Git托管服务;这可能是GitHub。如果我们使用的是通用凭证管理器,我们可以使用以下命令重新登录:

$ $ git credential fill——://

原因4:文件大小限制

“git push”可能看起来冻结的另一个原因是,如果您试图推送一个大文件。可以使用以下命令获取当前配置的缓冲区限制:

获取http.postBuffer

“http。postBuffer配置项决定了Git在发出HTTP请求时缓冲的数据的最大字节数。例如,在通过HTTP/HTTPS的推送或获取操作期间。

要以字节为单位配置该值,请使用以下命令:

$ git config—global http。postBuffer 10485760

这应该将最大值设置为10 MB。

原因5:Garbage Collector

Git有一个垃圾收集器,它允许Git通过删除不必要的对象和优化repo数据库来优化和清理存储库。

垃圾收集器的工作是帮助减少repo的大小,提高其性能,并确保Git高效地执行。

但是,如果垃圾收集器出现问题,则诸如推送之类的任务可能会失败。要修复并重新运行垃圾收集器,请导航到存储库目录并运行以下命令:

$ git gc

这将手动运行垃圾收集器并立即执行优化。

原因6:Dead Session/Network Error

到目前为止,您可能应该检查的最后一个手段是确保终端会话没有死亡。在某些情况下,某些终端将在给定的持续时间后终止非活动会话以节省资源。

要解决这个问题,可以重新创建一个新的终端会话。确保您的设备已连接到互联网。

结论

在本教程中,我们探讨了冻结“git push”的潜在原因,为什么会发生,以及如何修复它。