现象

  1. 进入到含有 git 仓库的目录时,终端长时间无响应,或卡顿
  2. 在该类型目录下,进行的任意操作,即使命令本身执行很快也需要很长时间终端才有响应
  3. 在新窗口下通过 ps -aux | grep git 可见 git status ... 的命令正在执行

原因

  • Oh My Zsh 为终端增加了自动跟踪 git 仓库变化的能力,其实是在检测到当前目录是在 git 管理的目录中时,执行了一系列的操作来获取到变化,并格式化为好看的信息显示在终端上

解决方案

方案一

覆盖 Oh My Zsh 默认的方法,在 ~/.oh-my-zsh/custom/ 文件夹中加入一个自定义脚本,以 .zsh 作为后缀名,比如:disable_git_info.zsh

function git_prompt_info() {
  ref=$(git symbolic-ref HEAD 2> /dev/null) || return
  echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$ZSH_THEME_GIT_PROMPT_SUFFIX"
}

方案二

通过设置标识关闭 dirty 检查

git config --add oh-my-zsh.hide-dirty 1

若需要打开,则:
git config --add oh-my-zsh.hide-dirty 0

总结

对于我来说,因为是在虚拟机中遇到这个问题,非常的影响操作的流畅度,所以我选择了方案一,相当于是直接的关掉了这个特性。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐