为啥带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢?
Posted
技术标签:
【中文标题】为啥带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢?【英文标题】:Why is Git on WSL2 with SouceTree so slow for me?为什么带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢? 【发布时间】:2021-02-17 18:17:51 【问题描述】:我的环境如下。
Windows10(2004版,build 19041.572) 64 位操作系统 在 WSL2 上,我使用的是 Ubuntu(Ubuntu-20.04) 我将 git 与 SourceTree 一起使用。我使用 docker-compose 来开发 Web 服务。在 Windows 上运行 docker-compose 访问网页非常慢。我在 WSL2 上的 Ubuntu 的 Home 文件夹中创建了一个 docker 环境。网站数据(Laravel)安装在WSL2上的docker环境中,由git管理。
如何提高 WSL2 上 SourceTree 的速度? Windows 上的 Git 速度更快。
【问题讨论】:
这里也会发生同样的情况。太慢了以至于它不是真正可用的。它还列出了许多未暂存的未更改文件(可能是行尾或权限?)。 我找到了 WSLGIT(github.com/andy-5/wslgit)。但它在 SourceTree 上不起作用。 @zenzenzenfone 您能否说明您在哪里运行 SourceTree 以及如何访问本地存储库?我想您正在 Windows 中运行 SourceTree 并通过\\wsl$\Ubuntu-20.04\home\...
访问文件。请将这些信息添加到您的问题中。
【参考方案1】:
不幸的是,WSL2 has an issue 的文件系统性能在 /mnt
。
如果您不需要从 Windows 中编辑它,则可以选择 checkout
将您的 repo 放入容器的 /home
,而不是 /mnt/...
。
在 Windows 上从 Linux 容器运行 Docker 将无济于事。
UPD:同样的问题可能出现在没有安装任何东西的大型项目上,但仍通过 Windows 的 \\wsl$
路径访问 WSL 内的 repo。问题仍未解决。
【讨论】:
SourceTree 和 IDE(带 Remote - WSL 的 Visual Studio Code 除外)中的性能面临巨大的性能问题,即使项目直接放在 Linux 文件系统中(如/home
或 @987654328 @)。我想@zenzenzenfone 在 Windows 上使用 SourceTree(通过\\wsl$
访问文件)而不是在 WSL 内部应该在他/她的问题中澄清什么。
我发现很多与“docker-compose 运行缓慢”或“npm run serve 运行缓慢”类似的问题。在所有类似的情况下,这与 Windows/Linux 文件系统之间的低 FS 性能有关。因此,谈论特定路径或特定软件无关紧要 - 涉及大量文件的大量 IO - 会导致同样的问题。要点 - WSL2 中的问题存在。
路径很重要。当您的项目位于 e. G。在/home/user/project
中,您正在从 Linux 发行版 bash 中启动 docker-compose,它快如闪电。在 Windows CLI(\\wsl$\distribution_name\home\user\project
)中调用 docker-compose 确实很慢,即使它是完全相同的 docker-compose 文件。反之亦然 - 从 Linux 调用 /mnt/c/my-project
很慢,而在 Windows 中调用 C:\my-project
又快了。所以结论是,WSL(2) 只有在 Windows 访问时才慢,而 NTFS 只有在 Linux 访问时才慢。以上是关于为啥带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢?的主要内容,如果未能解决你的问题,请参考以下文章
WSL2 和 Docker 桌面上的 Postgres 卷挂载:PGDATA 文件夹上的权限被拒绝
WSL2:为啥我必须在重启 PC 后关闭 WSL 才能重启 WSL