天天看點

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"
           
參考:解決windows git亂碼問題

禁用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進行了設定,不會有這個問題。