git - 对于大型项目来说,在 WSL 上的 Debian 和 Ubuntu 上运行 git 命令非常慢

标签 git git-bash windows-subsystem-for-linux

我们有一个非常大的项目,总共有近 15,000 次提交。我使用 WSL 在 Windows 计算机上运行 Debian 9.3。我的 git 版本是 2.17.0。

当我运行 git status 等命令时,至少需要 20 秒才能完成。即使没有进行任何更改。

我尝试过多个旧版本的 git,甚至尝试过 Ubuntu,但仍然遇到相同的结果。我尝试过在这里和其他网站上的各种帖子中运行一堆命令,但没有一个起作用。

有趣的事情:当我在 Windows 上打开 cmd.exe 或 Git Bash 时,运行 git status 只需要不到一秒的时间。

这可能是什么原因造成的?我可以做什么来解决这个问题?

最佳答案

2019 年 6 月更新:WSL 2 is coming ,并具有完整的系统调用兼容性。
这应该会显着提高 Git 命令性能!

<小时/>

2018 年原始答案:

Git 在没有任何中间层的主机上执行时效果最佳。

例如,如果您的存储库位于共享文件夹上,Git 的速度会相当慢。
在 WSL 的情况下,存储库是在本地访问的,但通过 filesystem translation各种Linux文件系统操作到NT内核操作之间。

translation

这足以解释性能下降的原因,尤其是在大型 Git 存储库上 另外,请确保您的 $PATH 不会引用包含 Windows 可执行文件的文件夹,这些文件夹可能会被调用,而不是 Linux 可执行文件

可能的原因:

  • 文件系统模拟(慢):WSL issue 2759
  • Shell Prompt :确保在基本的 shell 提示符下测试您的命令,而不需要任何复杂的 PS1 计算
  • Windows Defender AV :尝试从 AV 扫描中排除(用于测试)WSL 管理的文件系统。

关于git - 对于大型项目来说,在 WSL 上的 Debian 和 Ubuntu 上运行 git 命令非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50231989/

相关文章:

visual-studio-code - VSCode : use WSL Git instead of Git for Windows

java - 在 IntelliJ 中运行 Eclipse 项目时遇到问题

linux - 在 git init 上自动添加 Remote

windows - 在 Windows 上启动 Git Bash 时运行 SSH Agent

powershell - 从 powershell 执行时,WSL 无法识别 "uname -s"之类的命令

python - WSL 上的 Virtualenv 创建的文件与 PowerShell 上的 Virtualenv 不同

ruby-on-rails - Heroku Ruby on Rails 升级崩溃

git commit 触发器阻止字节顺序标记

git - 如何在不更改提交消息的情况下修改提交(重用前一个)?

visual-studio-code - Visual Studio 代码 : Use Git Bash (windows)