Mor*_*der 12 git git-bash windows-subsystem-for-linux
我们有一个非常大的项目,总共有近15000次提交.我9.3使用WSL在我的Windows机器上运行Debian .我的git版本是2.17.0.
当我运行诸如此类的命令时git status,至少需要20秒才能完成.即使没有做出任何改变.
我尝试了多个旧版本的git甚至尝试过Ubuntu,但我仍然遇到了相同的结果.我已尝试在这里和其他网站上运行来自各个帖子的一堆命令,但它们都没有奏效.
有趣的事情:当我cmd.exe在Windows上打开或Git Bash时,运行只需不到一秒钟git status.
可能是什么导致了这个?我该怎么做才能解决这个问题?
h-r*_*rai 13
我最终添加了一个 hack。
alias git=git.exe
Run Code Online (Sandbox Code Playgroud)
现在,它使用 WSL 配置/SSH 设置在 WSL 中运行 Windows git 可执行文件。
小智 6
特别帮助我使用 WSL 2 中的 oh-my-zsh,它在每个命令后运行“git status”。
像上面提到的那样关闭 Defender 也有一点帮助。
2019年6月更新:WSL 2即将面世,并具有完整的系统调用兼容性。
那应该大大提高Git命令的性能!
原始答案2018:
在没有任何中间层的主机上执行时,Git的工作效果最佳。
例如,如果您的仓库位于共享文件夹中,则Git的运行速度将大大降低。
对于WSL,可在本地访问该存储库,但可通过将各种Linux文件系统操作之间的文件系统转换为NT内核操作来进行。
这足以说明性能降低,尤其是在大型Git存储库上,另外还要确保您$PATH没有引用可能带有Windows可执行文件而不是Linux文件夹的文件夹。
可能的原因:
PS1计算您可以使用GIT_TRACE_PERFORMANCEenv var 获得一些分析详细信息:
$ GIT_TRACE_PERFORMANCE=1 git status -sb -uno
08:51:54.525808 read-cache.c:1889 performance: 0.000330659 s: read cache .git/index
08:51:54.528532 preload-index.c:112 performance: 0.002669928 s: preload index
08:51:54.528667 read-cache.c:1447 performance: 0.000109768 s: refresh index
08:51:54.528892 diff-lib.c:250 performance: 0.000056516 s: diff-files
08:51:54.534630 diff-lib.c:527 performance: 0.005070461 s: diff-index
## wip/foo
08:51:54.536419 trace.c:420 performance: 0.013503141 s: git command: git status -sb -uno
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4172 次 |
| 最近记录: |