1. Ubuntu vim git log中文亂碼
現在隨著Githut和SNS的流行,Social Code也像Facebook在世界中流行一樣,在程序猿中流行開來。而且有猶如星星之火,在程序猿中燎原開來。有Linus這樣的大牛作為發明人,有Linux Kernel這樣的龐大應用作為「小白鼠」做測試,再有Github這樣開放的網路交流平台,Git想不火都難。所以,今天D瓜哥也趕趕時髦,玩轉一下Git,這個版本管理工具。
Git,這個版本管理工具是美國發明的,所以對中文的原生支持性不是很好。在使用時,主要會遇到三個場景對中文的支持性比較差,嚴重影響用戶體驗。下面,D瓜哥就針對這三個使用場景進行分別的描述。另外,特別說明一下,我平時工作、學習最主要的系統是Windows 7。Git使用的是msysgit。所以,以下的解決方案是針對Windows系統的解決方案。
一、ls -l 顯示文件列表
想想剛玩Git那會,下個msysgit,瞬間裝好,信心爆棚,無視GUI(我比較喜歡Linux以及命令行),cd到某個目錄下,ls查看文件,傻眼了。MD,竟然都是亂碼,著實無語加郁悶了一把!這是該怎麼辦呢?
其實,很簡單。只需要修改一下配置信息就能解決問題。這里先做個假設,假設你Git的安裝目錄是%GIT_HOME%。修改步驟如下:
使用文本編輯器打開文件%GIT_HOME%etcgitconfig,將下面顯示的三個選項的字元集修改成如下:
[gui]
encoding = utf-8
[i18n]
commitencoding = gbk
[svn]
pathnameencoding = gbk
通過這里的設置,打開Git環境中的中文支持。另外,需要特意說明一下,雖然pathnameencoding設置了文件路徑的中文支持,但是為了防止不必要的麻煩出現,同時也為了提高在Bash中快速的進入某個路徑,推薦使用英文路徑,不要使用中文路徑。
然後,使用文本編輯器打開文件%GIT_HOME%etcgit-completion.bash,然後再其中添加如下內容:
alias ls='ls --show-control-chars --color=auto'
我個人比較喜歡列表顯示文件,但是msysgit安裝後,不支持ll。所以,就自己手動添加上支持。在上面那行配置的下面,添加下面這行配置:
alias ll='ls -l'
玩Linux的人,應該都能看出來,其實這只是Linux命令中,給命令起了一個別名而已。
最後,使用文本編輯器打開文件%GIT_HOME%etcprofile,將下面的這個配置的字元集設置成如下:
export LESSCHARSET=utf-8 #或gbk
到這里,就大功告成了。你在Bash中,試一下,ls或者ll,是不是看到了久違的中文呢?
二、提交中文Commit Log
既然使用Git,那麼肯定是要文件修改後,肯定是要提交的。但是,剛剛安裝好後msysgit對Commit Log的中文支持是在是忍無可忍。沒辦法,這時還是要「自己動手,豐衣足食」啊。
其實,msysgit對中文Commit Log主要是因為默認的編輯器vi對中文的支持不好。所以,把默認編輯器修改成一個對中文支持比較好的編輯器即可。對於編輯器,我比較喜歡vim(在Windows下就是gVim),下面就把默認編輯器修改成gVim。步驟如下:
打開目錄GIT_HOME%in;
找到vi或者vim文件(注意:沒有後綴。),復制一份出來命名gvim;
,使用文本編輯器打開gvim,把裡面的exec /share/vim/vim73/gvim 改成自己的Gvim目錄,D瓜哥的是exec /C/Vim/vim73/gvim
運行msysgit Bash,執行命令git config –global core.editor gvim
到這里,把默認編輯器已經修改成了gVim。另外,還需要修改一下msysgit的配置項。使用文本編輯器打開文件%GIT_HOME%etcinputrc,修改下面兩個配置項如下:
我第一次在修改完這些配置後,提交修改中還是不能很好的支持地支持中文。後來發現,主要是使用方法不對。這里,給大家提個醒,提交時應該使用如下指令:
注意,不要加-m的參數。否則就不能使用gVim了,也就不能支持中文了。
三、提交文件名為中文的文件
其實,D瓜哥也不知道如何修改才能很好的支持中文。不過,這里有一個取巧的方法:一般同時修改的文件都是相關的文件。所以,在添加或者提交時,可以使用-a參數,把幾個文件同時添加或提交。
在這里,D瓜哥也做個留個疑問,如何才能讓Git很好的支持提交文件名為中文的文件?