win 在powershell中,使用git log就很慢,但是用git bash来发送git log速度很快
原因:
不是 git.exe 本身慢,是分页器 (pager)、ANSI 颜色输出、终端渲染三者在 PowerShell 下的开销远大于 Git Bash
Git Bash 内置 `less`(MSYS2 版本)作为分页器;PowerShell 默认直接把 git log 的全部输出流式交给终端渲染,大量 ANSI 转义序列、颜色字符会被 PSReadLine / Windows Terminal 逐行解析,大仓库日志就会卡。
Git Bash:git log → 调用内置 less,git 只输出一屏内容,剩余日志按需读取,极快。
PowerShell:git log → git 一次性输出全部日志 + ANSI 颜色代码,终端持续解析大量字符流,卡顿。
验证方法
在 PowerShell 执行:
# 禁用分页器,一次性输出全部日志
git log --no-pager
# 或者直接关掉pager
git --no-pager log
如果此时速度立刻变快,确定就是分页器 / ANSI 渲染问题。
修复方案(推荐)
方案 1:全局配置 git,在 PowerShell 也使用 less 分页器
git config --global core.pager "less -R -F -X"
-R:支持 ANSI 颜色-F:输出内容少于一屏时,自动退出分页器,不等待按键-X:不清除屏幕
⚠️ 前提:你的 PATH 环境里能找到 Git for Windows 自带的
less.exe(Git 安装目录 /usr/bin/less.exe)。
方案 2:不想用 less,直接关闭分页器(牺牲翻页,速度最快)
git config --global core.pager ""
之后 git log 直接一次性输出全部日志,不会进入分页。

浙公网安备 33010602011771号