Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Git pull随机挂起_Windows_Git_Git Pull - Fatal编程技术网

Windows Git pull随机挂起

Windows Git pull随机挂起,windows,git,git-pull,Windows,Git,Git Pull,在windows上正常使用git时(例如git push和git pull),有时速度会非常慢。反复运行git pull在大多数情况下都会在两秒钟内返回,但大约1/6的尝试大约需要一分钟 我已经将git config--global core.preload index和git config--global core.fscache设置为true 运行set GIT\u TRACE=1后的示例 慢: 快速: 编辑: 运行git config--global credential.helper“后

在windows上正常使用git时(例如
git push
git pull
),有时速度会非常慢。反复运行
git pull
在大多数情况下都会在两秒钟内返回,但大约1/6的尝试大约需要一分钟

我已经将
git config--global core.preload index
git config--global core.fscache
设置为true

运行
set GIT\u TRACE=1后的示例

慢:

快速:

编辑:

运行
git config--global credential.helper“
后,输出中包含
凭证管理器的行将替换为:

17:18:44.139589 run-command.c:350       trace: run_command: 'bash' '-c' 'cat >/dev/tty && read -r -s line </dev/tty && echo "$line" && echo >/dev/tty'
Password for 'https://[...]':
17:18:44.139589 run command.c:350跟踪:run_命令:“bash'-c''cat>/dev/tty&&read-r-s line/dev/tty”
“https://[…]”的密码:

有时在显示密码行之前会出现延迟,其持续时间和频率(据我所知,大约20次测试)与之前相同。

根据您的跟踪,验证步骤似乎很慢。我可以看出两个主要原因:

  • 服务器有时响应缓慢。在客户端,您将无法执行任何操作
  • 您的身份验证有问题。我认为最可能的原因是,您可能会使用一个凭证管理器,这会导致速度缓慢。尝试禁用它

    • 请选择ssh而不是https。我假设您已经有了GitBash,所以可以按照教程进行操作。确保将repo克隆到一个新目录中,以免丢失当前的https设置和任何本地更改

      如果问题仍然存在,虽然很可能是网络问题,你可以考虑在这个过程中显示的SSH调试。

      TL;DR-通过在我的机器上禁用.net程序集绑定(通过fuslogvw),修复了我的慢速git(GCM)

      通过在跟踪模式下运行git和GCM,我发现这是由于git凭据管理器(GCM)运行缓慢所致:

      $ SET GIT_TRACE=1 
      $ SET GCM_TRACE=1
      $ git fetch
      
      日志显示GCM运行缓慢。当查看带有sysinternals进程监视器的GCM以了解发生了什么时,我看到它正在大量地写入磁盘

      现在,事实证明GCM是一个.net进程,我在几天前(通过fuslogvw-fusion日志查看器)将.net配置为将所有程序集绑定记录到磁盘以调试某个进程


      禁用绑定日志记录修复了我的问题,速度恢复正常。

      您是否尝试过停用对防病毒的实时分析?@VonC:我遇到了与OP相同的问题,我得到了ESET。禁用防病毒后,问题仍然存在。@Tatranskymedved是Windows 10,7吗?Git 2.12?Win10 x64 Pro,Git版本2.10.2.windows.1M我和我的团队曾经在公司服务器上遇到过同样的问题。当repo被压缩(可能是
      git-gc
      或类似)或由于从一台服务器迁移到另一台服务器而重新组织时,推送突然又变得很快。因此,也许这有助于上游回购的gc。嗯,禁用cred。经理将导致我每次都被迫输入密码。如果有任何解决办法或解释为什么会发生这种情况,我们会非常感激的。很难说为什么你会有这种想法。经理没有调查就行动迟缓。检查是否有任何更新。如果运气好的话,会有一个,它会解决你的问题。否则,我恐怕我能建议您的最佳选择是尝试使用ssh URL而不是https URL进行git repo。身份验证将使用ssh密钥完成,并且每次计算机启动时只会提示密钥密码一次。它可能比什么都没有好,即使它没有信用卡那么好。manager:-/try ssh,因为身份验证将使用密钥对进行,并且每个会话都有效。还要尝试验证是否存在任何网络延迟/数据包丢失。SSH是一个很好的解决方法,但是我喜欢用一些解决方案来解决这个问题。我不知道关于
      GCM\u TRACE
      +1.未在Git回购协议或Git回购协议中提及:。它在
      17:18:44.139589 run-command.c:350       trace: run_command: 'bash' '-c' 'cat >/dev/tty && read -r -s line </dev/tty && echo "$line" && echo >/dev/tty'
      Password for 'https://[...]':
      
      $ SET GIT_TRACE=1 
      $ SET GCM_TRACE=1
      $ git fetch