這是因為Git沒有找到預設編輯器,它提示你使用"-m"或者"-F"參數來追加提交說明,可以使用git commit --help擷取協助資訊。或者也可以通過如下的方式設定一個。這裡設定gvim做為Git的全域編輯器。沒錯,下面shell裡的反斜線 "" 是必須的。
git config --global core.editor ""D:Program Files (x86)gvimvim73gvim.exe""
需要的配置:
1、C:\Program Files\Git\etc\git-completion.bash:
alias ls='ls --show-control-chars --color=auto'
說明:使得在 Git Bash 中輸入 ls 命令,可以正常顯示中文檔案名稱。
2、C:\Program Files\Git\etc\inputrc:
set output-meta on
set convert-meta off
說明:使得在 Git Bash 中可以正常輸入中文,比如中文的 commit log。
3、C:\Program Files\Git\etc\profile:
export LESSCHARSET=utf-8
說明:$ git log 命令不像其它 vcs 一樣,n 條 log 從頭滾到底,它會恰當地停在第一頁,按 space 鍵再往後翻頁。這是通過將 log 送給 less 處理實現的。以上即是設定 less 的字元編碼,使得 $ git log 可以正常顯示中文。其實,它的值不一定要設定為 utf-8,比如 latin1 也可以……。還有個辦法是 $ git –no-pager log,在選項裡禁止分頁,則無需設定上面的選項。
4、C:\Program Files\Git\etc\gitconfig:
[alias]
go = “! bash -c \”git pull && git add .; if [ \\\"$*\\\" == \\\"\\\" ]; then git commit -a; else git commit -am \\\”$*\\\”; fi; git push origin master:your-id;\”"
說明:強大的 alias,有了這個,我們 90% 的情況下只需要輸入 $ git go 這一個命令,免去了先拉後提交再推的繁瑣步驟。
兩種用法:
$ git go
或
$ git go aaa 修訂說明
命令後帶修訂說明時,會直接提交。需要注意的是,在“修訂說明”之前,有還個“aaa”,這是個 bug,參數中的第一個會被忽略,所以隨便寫一個湊數的……。
若命令列裡沒有提供修訂說明,則會自動彈出一個編輯器,等待輸入。預設的編輯器是 Vim。Vim 的使用是很簡單的,首先要明白它有兩個模式,一個是命令模式、一個是輸入模式。Vim 啟動的時候預設的是命令模式,需要先按’i'鍵,進入輸入模式;然後就正常編輯;編輯完成之後,將IME切換回英文狀態,按 Esc 重新進入命令模式;此時按 ‘(Shift):wq‘ 並斷行符號,w 表示寫入儲存、q 表示退出。完畢!
若實在不習慣 Vim,也可以設定為其它編輯器:
$ git config --global core.editor "notepad"
其中 notepad 可以替換為更好用的 wordpad、notepad++ 等(不過它們在命令列裡無法直接存取,得先設定 PATH 變數)。
以上 alias 是為 Windows 定製的,Linux 下可以寫得更優雅,不過鑒於使用上沒分別,就保持一致吧~。
[gui]
encoding = utf-8
說明:我們的程式碼程式庫是統一用的 utf-8,這樣設定可以在 git gui 中正常顯示代碼中的中文。
[i18n]
commitencoding = GB2312
說明:如果沒有這一條,雖然我們在本地用 $ git log 看自己的中文修訂沒問題,但,一、我們的 log 推到伺服器後會變成亂碼;二、別人在 Linux 下推的中文 log 我們 pull 過來之後看起來也是亂碼。這是因為,我們的 commit log 會被先存放在項目的 .git/COMMIT_EDITMSG 檔案中;在中文 Windows 裡,建立檔案用的是 GB2312 的編碼;但是 Git 不知道,當成預設的 utf-8 的送出去了,所以就亂碼了。有了這條之後,Git 會先將其轉換成 utf-8,再發出去,於是就沒問題了。