为什么git拉挂?

use*_*285 17 git git-pull git-bash

当我做一个git pull,从git bash,终端通常运行拉,更新我的本地,然后挂起.我不确定它是否在等我做某事,但我通常会退出CTRL-C.之后,我得到一个index.lock阻止我做其他我必须删除的东西.我误解了怎么git pull运作?

Aki*_*kif 25

您可能需要删除不必要的git对象,例如dangling commits & blobs:

git fsck && git gc --prune=now
Run Code Online (Sandbox Code Playgroud)

git-fsck:验证数据库
git-gc中对象的连通性和有效性:清理不必要的文件并优化本地存储库

你可以在这里参考一下dangling commits & blobs.


Ste*_*hen 15

作为一个不经常使用 VS Code 的人,我运行时也以为 git 挂了git pull。事实证明我只是不太善于观察。如下图所示,我全神贯注于终端,没有注意到输入用户名的提示,而这正是“挂起”的实际原因。

也许它根本就没有真正挂起来


Bar*_*lly 12

检查 SSH_AUTH_SOCK 是否指向过时的 ssh-agent 端点。取消设置 ( unset SSH_AUTH_SOCK) 进行测试。


bya*_*ake 9

在 Fedora 32 上,所有 git 命令都挂在我身上(仅适用于 gitlab 上的存储库),解决了

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Run Code Online (Sandbox Code Playgroud)

将其留在这里以防对其他人有帮助


zac*_*san 8

如果您从 linux 机器上拉取数据,您可能需要检查此文件:

/etc/ssh/ssh_config

确保您没有将默认 SSH 端口设置为 22 以外的其他端口。有些人对该文件和以下内容感到困惑:

/etc/ssh/sshd_config

当他们将服务器设置为非标准 SSH 端口时。


flo*_*ter 6

就我而言,通过将 ssh 切换为使用 IPv4 解决了该问题。

为此,请将AddressFamily inet字符串放入~/.ssh/config文件中。


Zac*_*Zac 5

我在 Windows 中,我通过在拉取之前关闭 Visual Studio 解决了挂起问题。

  • (在 Mac OS X 上)我打开了 Visual Studio Code,它挂在了 `git pull` 上。关闭它。是否再次执行 `git pull` 并且 VS Code 启动并打开了由于 `git pull` 而需要的 `merge` 的提交消息。输入一条消息,保存,关闭窗口,一切都很好。 (4认同)
  • 我的网络出现问题,阻止了 ssh 连接,当我阅读您的答案时,我意识到我的问题可能与我预期的不同。 (2认同)

sjm*_*ett 5

您的 ISP 可能会阻止流量。例如,英国的 VirginMedia 使用过滤器代理进行了一些操作,导致 GitHub 流量挂起。我遇到了这个问题,禁用过滤器解决了它。