1. 程式人生 > >徹底解決Git中文亂碼問題

徹底解決Git中文亂碼問題

現在隨著Githut和SNS的流行,Social Code也像Facebook在世界中流行一樣,在程式猿中流行開來。而且有猶如星星之火,在程式猿中燎原開來。有Linus這樣的大牛作為發明人,有Linux Kernel這樣的龐大應用作為“小白鼠”做測試,再有Github這樣開放的網路交流平臺,Git想不火都難。所以,今天D瓜哥也趕趕時髦,玩轉一下Git,這個版本管理工具。

Git,這個版本管理工具是美國發明的,所以對中文的原生支援性不是很好。在使用時,主要會遇到三個場景對中文的支援性比較差,嚴重影響使用者體驗。下面,D瓜哥就針對這三個使用場景進行分別的描述。

一、ls -l 顯示檔案列表

想想剛玩Git那會,下個msysgit,瞬間裝好,信心爆棚,無視GUI(我比較喜歡Linux以及命令列),cd到某個目錄下,ls檢視檔案,傻眼了。MD,竟然都是亂碼,著實無語加鬱悶了一把!這是該怎麼辦呢?

其實,很簡單。只需要修改一下配置資訊就能解決問題。這裡先做個假設,假設你Git的安裝目錄是%GIT_HOME%。修改步驟如下:

使用文字編輯器開啟檔案%GIT_HOME%\etc\gitconfig,將下面顯示的三個選項的字符集修改成如下:

[gui]
     encoding = utf-8
[i18n]
     commitencoding = gbk
[svn]
     pathnameencoding = gbk

通過這裡的設定,開啟Git環境中的中文支援。另外,需要特意說明一下,雖然pathnameencoding設定了檔案路徑的中文支援,但是為了防止不必要的麻煩出現,同時也為了提高在Bash中快速的進入某個路徑,推薦使用英文路徑,不要使用中文路徑。

然後,使用文字編輯器開啟檔案%GIT_HOME%\etc\git-completion.bash,然後再其中新增如下內容:

alias ls='ls --show-control-chars --color=auto'

我個人比較喜歡列表顯示檔案,但是msysgit安裝後,不支援ll。所以,就自己手動新增上支援。在上面那行配置的下面,新增下面這行配置:

alias ll='ls -l'

玩Linux的人,應該都能看出來,其實這只是Linux命令中,給命令起了一個別名而已。

最後,使用文字編輯器開啟檔案%GIT_HOME%\etc\profile,將下面的這個配置的字符集設定成如下:

export
LESSCHARSET=utf-8 #或gbk

到這裡,就大功告成了。你在Bash中,試一下,ls或者ll,是不是看到了久違的中文呢?

二、提交中文Commit Log

既然使用Git,那麼肯定是要檔案修改後,肯定是要提交的。但是,剛剛安裝好後msysgit對Commit Log的中文支援是在是忍無可忍。沒辦法,這時還是要“自己動手,豐衣足食”啊。

其實,msysgit對中文Commit Log主要是因為預設的編輯器vi對中文的支援不好。所以,把預設編輯器修改成一個對中文支援比較好的編輯器即可。對於編輯器,我比較喜歡vim(在Windows下就是gVim),下面就把預設編輯器修改成gVim。步驟如下:

  1. 開啟目錄GIT_HOME%\bin\;
  2. 找到vi或者vim檔案(注意:沒有後綴。),複製一份出來命名gvim;
  3. ,使用文字編輯器開啟gvim,把裡面的exec /share/vim/vim73/gvim 改成自己的Gvim目錄,D瓜哥的是exec /C/Vim/vim73/gvim
  4. 執行msysgit Bash,執行命令git config –global core.editor gvim

到這裡,把預設編輯器已經修改成了gVim。另外,還需要修改一下msysgit的配置項。使用文字編輯器開啟檔案%GIT_HOME%\etc\inputrc,修改下面兩個配置項如下:

set output-meta on
set convert-meta off

我第一次在修改完這些配置後,提交修改中還是不能很好的支援地支援中文。後來發現,主要是使用方法不對。這裡,給大家提個醒,提交時應該使用如下指令:

git commit -a

注意,不要加-m的引數。否則就不能使用gVim了,也就不能支援中文了。

三、提交檔名為中文的檔案

其實,D瓜哥也不知道如何修改才能很好的支援中文。不過,這裡有一個取巧的方法:一般同時修改的檔案都是相關的檔案。所以,在新增或者提交時,可以使用-a引數,把幾個檔案同時新增或提交。

在這裡,D瓜哥也做個留個疑問, 如何才能讓Git很好的支援提交檔名為中文的檔案?

參考資料:

from: http://www.tuicool.com/articles/J7b2Mb