标题:[实践OK]Macbook下使用 git log、git diff 命令时出现 ESC[33 和 ESC[m 乱码的解决办法 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Thu, 03 Jan 2019 10:28:50 +0000 作者:jackxiang 地址:http://jackxiang.com/post/10019/ 内容: 好不容易买个Mac,最近一段时间在使用 git log 和 git diff 命令的时候一直有乱码出现,具体表现为在行首出现 ESC[33,而在行尾出现 ESC[m,如下所示: $git log --oneline --all --graph * ESC[33mb680945ESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m, ESC[mESC[1;31morigin/masterESC[mESC[33m, ESC[mESC[1;31morigin/HEADESC[mESC[33m)ESC[m 包路径和代码路径默认宏设置 * ESC[33mb680945ESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m, ESC[mESC[1;31morigin/masterESC[mESC[33m, ESC[mESC[1;31morigin/HEADESC[mESC[33m)ESC[m 包路径和代码路径默认宏设置 * ESC[33meb6aed9ESC[m Yum Crontab文案修改。 * ESC[33m9e89348ESC[m Merge branch 'master' of gitlab.qr.xxxx.com:irdc/ansible ESC[32m|ESC[mESC[33m\ESC[m ESC[32m|ESC[m * ESC[33mdfe971eESC[m 将10.71.**.16重装后放入idle * ESC[33m|ESC[m ESC[33m44090ddESC[m 去掉Ansible测试机:10.0.182.151: # 向东的Ansible测试机。 ESC[33m|ESC[mESC[33m/ESC[m * ESC[33mbee5467ESC[m Merge branch 'master' of gitlab.qr.xxxx.com:irdc/ansible ESC[34m|ESC[mESC[35m\ESC[m ESC[34m|ESC[m * ESC[33mdf87a88ESC[m Merge branch 'master' of gitlab.qr.xxxx.com:irdc/ansible ESC[34m|ESC[m ESC[36m|ESC[mESC[1;31m\ESC[m ESC[34m|ESC[m ESC[36m|ESC[m * ESC[33m2f9ac30ESC[m Merge branch 'master' of gitlab.qr.xxxx.com:irdc/ansible ESC[34m|ESC[m ESC[1;33m|ESC[mESC[1;33m/ESC[m ESC[34m|ESC[m * ESC[33mc536aebESC[m 修改YUM仓库的注释及加上tag. ESC[34m|ESC[m * ESC[33m8a45851ESC[m Yum仓库:规范Nginx的Yum文件的Nginx配置conf的文件命名规范。 ESC[34m|ESC[m * ESC[33m9e1368bESC[m Yum仓库:1)删掉NAS挂载脚本。2)删掉没有用的调试变量脚本。 ESC[34m|ESC[m * ESC[33m3621108ESC[m 对yum打包及仓库的Ansible代码重新梳理,提交Git存档。 ESC[34m|ESC[m * ESC[33m603f38bESC[m 梳理Yum仓库提交。 ESC[34m|ESC[m * ESC[33m00637f6ESC[m Merge branch 'master' of gitlab.qr.xxxx.com:irdc/ansible ESC[34m|ESC[m ESC[1;34m|ESC[mESC[1;35m\ESC[m ESC[34m|ESC[m ESC[1;34m|ESC[m * ESC[33m134dc40ESC[m 诗词大会项目添加mongodb机器 ESC[34m|ESC[m ESC[1;34m|ESC[m * ESC[33m83b0690ESC[m 诗词大会项目添加自动部署脚本 ESC[34m|ESC[m * ESC[1;35m|ESC[m ESC[33mee57520ESC[m Ansible的正则替换由于之前是于Shell交互,后面直接写Yaml里不一样,经过修改测试提交Git仓库。 * ESC[1;35m|ESC[m ESC[1;35m|ESC[m ESC[33mca9dea7ESC[m 将爱秀替换为上电视,对里面的Release1/2作出代码及连接mysql/redis的标识。 ESC[1;35m|ESC[m ESC[1;35m|ESC[mESC[1;35m/ESC[m ESC[1;35m|ESC[mESC[1;35m/ESC[mESC[1;35m|ESC[m * ESC[1;35m|ESC[m ESC[33m51c9b78ESC[m Merge branch 'master' of gitlab.qr.xxxx.com:irdc/ansible ESC[1;36m|ESC[mESC[1;35m\ESC[m ESC[1;35m\ESC[m 解决 经过搜索之后了解到,出现该问题的原因是 git 使用的默认分页程序是 less,而默认的直接运行 less 的话,会无法正确解析转义字符。但是如果以 -r 命令来运行 less 的话,就可以解决了。故解决办法就是将 git 的默认分页程序改为 “less -r” 来运行,如下: git config --global core.pager "less -r" 后: 好了,买个Mac花了十年,用它得花一年。 Git log 和Git diff显示正常: git log --oneline --all --graph --name-only 方向来自:https://blog.yongli1992.com/2015/08/14/git-log-diff-esc-garbled/ Generated by Jackxiang's Bo-blog 2.1.1 Release