84

我喜欢 git 并且在家里经常在 OS X 上使用它。在工作中,我们在 Windows 上使用 svn,但希望在工具完全成熟后立即迁移到 git(不仅仅是TortoiseGit,还有类似于VisualSVN提供的非常好的 Visual Studio 集成)。但我离题了...

我最近在我的 Windows 7 机器上安装了msysgit,当使用包含的 bash 版本时,速度非常。不仅仅是 git 操作;clear大约需要五秒钟。啊啊啊!

有没有人遇到过类似的问题?


编辑似乎msysgit 不能很好地与UAC配合使用,可能只是在 XP 上开发或在禁用 UAC 的情况下运行 Vista 或 7 导致的微小设计疏忽;使用Run as administrator我在 OS X 上看到的闪电速度启动 Git Bash(或在启动 Git Bash w/oa 网络连接后的 7 上 - 请参阅@Gauthier 答案)。

编辑2啊哈! 看我的回答。

4

19 回答 19

55

您可以通过运行三个命令来设置一些配置选项来显着加快 Windows 上的 Git:

git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256

笔记:

  • core.preloadindex并行执行文件系统操作以隐藏延迟(更新:在 git 2.1 中默认启用)

  • core.fscache修复了 UAC 问题,因此您无需以管理员身份运行 Git(更新:在 Git for Windows 2.8 中默认启用)

  • gc.auto最小化 .git/ 中的文件数量

于 2014-06-04T19:28:24.383 回答
37

Vista 或 7 上运行缓慢的解决方案似乎是使用Run as administrator(或为 Git Bash快捷方式禁用 UAC ...或完全禁用 UAC )运行 Git Bash。区别是白天和黑夜,在 7 上使用 git 再次很棒。

这似乎与一个已知问题有关,正如我推测的那样,XP 作为 msysgit 的开发环境负有部分责任。

于 2010-06-03T15:42:02.977 回答
14

对我来说,问题是在 shell 提示符中使用 __git_ps1 - 我猜是由于 msysgit 中的磁盘访问速度慢。

解决方案是从 /etc/profile 的 PS1=... 行中删除 $(__git_ps1)

快速测试此解决方案是否适用:在 git shell 中,键入 export PS1='$' 并检查您的操作速度。

于 2011-02-17T11:17:07.957 回答
12

在一台新机器上尝试了这里的所有提示(包括我的另一个答案中的提示),但它们没有用,Git 仍然慢得要命。

然后我看了一下病毒扫描软件(预装的):我禁用了 McAfee Security Center 的实时扫描,并且 presto:git 现在速度非常快!“git svn rebase”所需的时间从 30 秒下降到 5 秒(!)。

我希望这对其他仍然在 Windows 上遇到慢速 Git 问题的人有所帮助,我花了好几个小时才弄清楚这一点。

于 2012-02-07T08:04:39.803 回答
9

唉,“以管理员身份运行”对我不起作用——但正如 Kevin L 发现的那样,断开网络适配器,启动 git bash,然后重新连接工作正常。所以我把它包装在一个批处理脚本中,并在我的开始菜单中放了一个快捷方式,标记为以管理员身份运行:

netsh interface set interface "Local Area Connection" DISABLED
cd "%USERPROFILE%\Documents\Visual Studio 2010\Projects"
start cmd /c ""C:\Program Files\Git\bin\sh.exe" --login -i"
netsh interface set interface "Local Area Connection" ENABLED

只要我记得我的网络暂时被切断,就可以享受这种待遇。

(Win 7 Professional SP1,Git 版本 1.7.8-preview20111206)

于 2012-01-06T11:48:15.950 回答
5

每当 Outlook 运行时,我的一位同事就会出现这种行为。尝试杀死前景并再次测试。

您也可以尝试测试:

  • 无需连接任何网络,
  • 没有运行防病毒软件,
  • 没有任何其他程序运行。
于 2010-05-18T11:30:11.200 回答
3

我们发现,在某些用户帐户上运行时,单独的 git.exe 实例会在调用 时被阻止WaitForSingleObject(),因此一次只有一个 git.exe 操作可以有效地运行。更改用户帐户可解决此问题。

详细信息:https ://stackoverflow.com/a/13054022

于 2012-10-25T10:02:50.740 回答
3

我有 MacAffee 并告诉它从实时扫描中排除 .git 目录和所有子目录解决了性能问题。

于 2013-03-20T05:33:12.707 回答
1

正如在这个问题中发现的那样,在关闭 UAC 虚拟化的情况下运行(不需要完全禁用 UAC)会产生很大的不同。

这篇文章解释了如何关闭它(见文章底部,只有一个注册表设置)。

在我正在连接的一个(大型)SVN 存储库中,仅进行上述更改就将“git svn rebase”所需的时间从 15 秒减少到 5 秒,提高了 3 倍。

于 2011-11-15T08:24:34.793 回答
1

如果关闭 UAC 不能提高性能,请尝试关闭 luafv 驱动程序。在尝试了此页面上的几乎所有内容以及几个类似的问题之后,这对我有用。Git 已经从无法使用的缓慢变成了相当不错的状态。

打开“regedit”并找到注册表项

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

将值Start从 2 更改为 4。

luafv 我在这里找到了有关如何禁用的详细信息。请注意,我个人不知道是什么luafv或做什么。该页面提供了各种警告,说明如果您关闭它可能会发生的坏事,您可能应该认真对待。

编辑:下面的评论指出我弄错了(链接有正确的方式)。现在已修复。对不起那些我破坏了注册表的人:)

于 2013-02-14T07:59:23.723 回答
1

与 Windows 7 UAC 混淆的另一种方法可能是将 mysysgit 安装在 Program Files 文件夹之外。例如,代替“C:\Program Files (x86)\Git”,尝试在“C:\git”中安装

我尝试摆弄“以管理员身份运行”和 UAC 控件无济于事,但放弃并重新开始安装。我之前的最大速度约为 15KiB/s,但现在超过 60kiB/s。

于 2013-03-20T04:22:56.003 回答
1

我刚刚对此进行了一段时间的故障排除,并且很难确定问题的根源。最后,我发现了两件事产生了巨大的影响:

  • 关闭 Windows 搜索服务。这对性能产生了巨大的影响。
  • 关闭 Git 扩展。在后台打开 Git Extensions Browse 窗口会导致 Cygwin git 命令执行时间增加一个看似随机的因素,最高可达 10 倍左右。
于 2015-01-29T19:14:08.337 回答
0

如果启用,这里的问题可能是 bash 完成,这在 Windows 上比 Linux 慢很多。

尝试将 PS1 变量设置为像“$”这样的简单变量,看看这是否加快了速度。如果是这样,请注意在最近的 git 版本中对 bash 完成进行了一些优化。也许你需要升级。

于 2010-05-25T16:53:36.820 回答
0

这对我有用。不要指望它会是一刀切的解决方案。

检查 bash 和 windows 中的 $HOME 环境变量。如果它指向用户帐户,请检查用户的 Windows 配置文件/权限。相应地更改用户帐户或 $HOME。

于 2011-06-02T06:18:45.013 回答
0

我在 Windows 7 x64 上作为受限用户帐户运行 git for Windows (msysgit) 时遇到了同样的问题。从我在这里和其他地方读到的内容来看,共同的主题似乎是缺乏管理权限和/或 UAC。由于 UAC 在我的系统上已关闭,因此它试图在程序文件目录中写入/删除某些内容的解释对我来说是最有意义的。

无论如何,我通过使用 zipinstaller 安装便携式版本的 git 1.8 解决了我的问题。请注意,我必须解压缩 .7z 分发文件并将其重新打包为 zip 才能使 zipinstaller 工作。我还必须手动将该目录添加到我的系统路径中。

现在的表现很好。即使它安装在 Program Files (x86) 目录中,我作为受限用户没有权限,但它似乎没有遇到同样的问题。我将此归因于便携式版本在写入/删除文件的位置更保守(可能是这种情况)或从 1.7 升级到 1.8 的事实。我不会试图确定是哪一个原因,我只想说它现在工作更好。

于 2012-12-19T04:23:42.113 回答
0

您可能想尝试卸载 msysgit,重新启动 Windows,安装最新版本的 msysgit。它似乎对我有用。我在这里找到了这个建议:

https://stackoverflow.com/a/4506192/1413941

编辑

PS 在遇到缓慢的 Git 问题之前,我已经禁用了 UAC,所以我不知道是否需要禁用 UAC 才能让 Git 快速运行。

于 2013-02-25T12:49:01.000 回答
0

正如所指出的,最好的解决方案是以管理员身份运行。但是,至少使git status更快的另一种选择是trustctime = false。在git status之前大约需要 30 秒,之后它与输出中显示的数量相同 - 花了 X 秒...

于 2016-03-04T08:45:28.677 回答
0

您还可以通过更改以下 git 配置来获得重要的性能提升:

git config --global status.submoduleSummary false

在 Window 7 x64 上运行简单git status命令时,我的计算机运行时间超过 30 秒。定义此选项后,命令立即生效。

按照以下页面中的说明激活 Git 自己的跟踪帮助我找到了问题的根源,这可能在您的安装中有所不同: https ://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-慢的

于 2016-12-01T16:40:21.797 回答
-4

这可能是分析您的 Git 存储库的提示问题。您可以通过在 Git 存储库之外的某处执行“清除”来进行测试。您可以通过修补 git-completion.bash 或使用 core.filemode 来加速它。

至于 Visual Studio 集成:这是开源的。期望别人免费为你工作是不公平的。

我也觉得不在 msysGit 邮件列表上问这个问题很有趣,但现在离题了。

于 2010-05-15T01:41:20.903 回答