Windows下git bash(及powershell)与tig常见问题的解决
最近用Windows比较多,说实话并不是很喜欢这个系统。
由于历史遗留问题,Windows中文默认gbk编码,这和Unix/Linux世界以及网络应用的utf8编码有很大的兼容问题。目前Windows似乎考虑迁移到utf8编码,在区域语言设置中加入了默认utf8的beta功能。但是如果你用了这个功能你会发现不但一些破旧不堪的软件会乱码,就连Windows自身都没做好迁移的准备。所以暂时还是使用Windows默认编码吧。
解决git bash和tig中文乱码:
- 配置git
git config --global i18n.commitencoding utf-8 # 设置提交日志使用utf-8
git config --global i18n.logoutputencoding utf-8 # 设置输出日志时使用utf-8
git config --global core.quotepath false # 不用双引号引用路径
- 在~/.bashrc中添加编码设置
export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8
export LESSCHARSET=utf-8 # 设置LESS字符集为utf-8
linux环境如果export LC_ALL=zh_CN.utf8报错,可尝试安装
language-pack-zh-hans
包:sudo apt install -y language-pack-zh-hans sudo update-locale LANG=zh_CN.UTF-8
上面是git bash,如果是powershell,设置字符集的方式为在profile文件中加入:
$env:LESSCHARSET="utf-8"
禁用bell
当你在git bash中用git diff
或git log
查看文件的时候,光标移动到头继续移动会听到Windows“噗噗噗噗--叮”的声音,很是烦人。可以这样禁用bell:
git config --global core.pager 'less -q'
或者手动在~/.gitconfig
中添加如下内容:
[core]
pager = less -q
更新:
其实最好的方式还是使用WSL1中的git/tig代替git bash 、tig
WSL2其实是个虚拟机,使用ext4磁盘,不配置git忽略换行符的时候gst会提示Windows系统中所有文件都修改了。。。
WSL1默认使用umask进行了设置,不会有这个问题。