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 直接一次性输出全部日志,不会进入分页。

 

posted @ 2026-09-22 14:20  年华似水゛  阅读(7)  评论(0)    收藏  举报