在《github快速上手》中,我們使用了官方推薦的 msysGit 命令行工具進行操作,這個工具在使用中文的時候有點問題(尤其配合github的時候)。今天我們採用另外的命令行工具cygwin,再加上vs插件,達到在 vs 中可視化操作的目標。
本文分成兩部分,第一部分簡述工具的安裝流程,第二部分解釋爲什麼使用這幾個工具。
第一部分: 安裝 git 開發工具
如果要使用 git 進行版本管理,其實使用 git 命令行工具就完全足夠了,圖形化工具(無論是 git extentions ,還是TortoiseGit),都只不過是命令行的封裝。就功能而言,他們能做的,命令行全部可以做到;但命令行能做的,他們不一定可以做到。命令行更加原生、本色,跨越平臺,以一當十。建議熟悉 git 命令行工具。
但圖形化工具也有自己的優點,就是直觀。下面推薦的組合方案是:
Git 命令行(cygwin) + Git Extensions + Git Source Control Provider
——這個組合可以徹底解決中文文件問題(包括中文文件名、目錄名,以及在 github 中的正常顯示)。
1)安裝 cygwin 命令行工具
cygwin 的官網在 http://www.cygwin.com/ ,直接下載地址是: http://cygwin.com/setup.exe 右鍵另存爲即可。
然後雙擊這個下載下來的 setup.exe 文件,開始安裝:
a) 選擇下載方式 (Choose a Download Source):保持默認,即選擇 Install from Internet;
b) 設置安裝路徑 (Select Root Install Directory): 保持默認;
c) 設置本地包的路徑 (Select Local Parkage Directory): 保持默認(下載之後的包會解壓到此處);
d) 選擇聯網方式 (Select Your Internet Connection): 保持默認,即選擇 Direct Connection;
e) 選擇一個下載源 (Choose a Download Site):請選擇一個國內的鏡像網址,這樣速度可能較快。
f) 選擇需要安裝的包(Select Packages):點擊列表中的+號可以展開,點擊軟件名稱後面的 Default 可以切換到 Install,表示要安裝這個
因爲列表內容很多,你也可以在搜索框架中搜索如下幾個軟件包:
git: 這個就是我們這次安裝的目的,當然要選擇(如果在搜索框搜索git,出現的是git的上層目錄名稱Devel,請展開Devel 目錄,才能看到git軟件包);
git-comletion:提供 Git 命令自動補齊功能。安裝該軟件包會自動安裝依賴的 bash-completion 軟件包。
openssh:SSH 客戶端,提供 Git 訪問 ssh 協議的版本庫。
vim:是 Git 缺省的編輯器。
選擇了以上幾個軟件包之後,就可以進入下一步開始正式安裝了。如果你的網速比較慢,可能需要幾十分鐘,請耐心等待。
整個安裝流程,你也可以參考這篇文檔:http://images.china-pub.com/ebook190001-195000/194010/ch03.pdf (共25M,系《git權威指南》的第三章3.3部分,此PDF是官方試讀樣章,可以免費閱讀)
2)安裝 git extensions
【作用】
git extensions 必須依賴於命令行工具,所以第二個安裝。
它安裝之後不但可以使用,也自動在vs中加上插件,可以在vs中非常直觀的、方便的操作。
【安裝方法】
下載網址:http://code.google.com/p/gitextensions/downloads/list 選擇GitExtensions226SetupComplete.msi那個帶Complete字樣的版本,它裏面集成了 KDiff3 工具。
下載之後,雙擊安裝,一路next,中間記得勾選 msysGit 和 KDiff3。
git extensions 安裝之後自帶一個很全面的教程。
【配置】
我們知道,目前git命令行工具有兩種,一種是 cygwin 下命令行,一種是 msysGit 命令行,git extensions 可以配置使用哪一種命令行工具,如下圖,我們選擇使用 cygwin,而不是 msysGit
第一個是:“用戶運行git的命令”
第二個是:全局配置文件,請點擊“Change HOME”按鈕,將目錄改爲 cygwin 的目錄。
另外,git extensions 會把 cygwin 默認的編輯器 vi 改成它自己的,你可以在“全局設置”中改回來。
補充1:git extensions 的配置文件放在註冊表中,如果卸載,這些配置仍然保留,你可以再次安裝發生問題,可以檢查註冊表中相關配置項,是否有問題。
補充2:在安裝 git extensions 過程中,我們勾選了 msysGit,現在安裝完畢,其實你可以卸載 msysGit了,不過也可以保留,因爲 msysGit 安裝目錄下自帶 git 的所有命令的幫助文檔。
3)安裝 Git Source Control Provider
【作用】
Git Source Control Provider 是 vs 的一個擴展插件,但必須依賴於 git extensions,所以第三個安裝,它的作用是,可以顯示文件狀態、顯示文件歷史等,讓 vs 中文件操作更加方便。
項目網址:http://gitscc.codeplex.com/
源碼:https://github.com/yysun/Git-Source-Control-Provider
視頻教程:www.youtube.com/watch?v=efS0kKvfi6k
【安裝方法】
在vs菜單中點擊“工具”的“擴展管理器”
然後在線搜索git,出現第一個結果就是 Git Source Control Provider,然後點擊“下載”
然後點擊vs菜單的“工具”的“選項”,展開左側的“Source Control”,在右側的“當前源代碼管理插件”中選擇“Git Source Control Provider”,然後點擊“確定”
啓用 Git Source Control Provider 之後,所有文件顯示出狀態圖標。你可以在文件上右鍵進入 Git 菜單進行操作。
第二部分:git 工具與中文問題
一)爲什麼使用上面的方案
git 的使用,總體上是 命令行工具搭配圖形化插件。
1)命令行工具有兩種,我們沒有選擇 msysGit,而是選擇了 cygwin;
2)圖形化插件,我們使用了 git extensions,沒有選擇 TortoiseGit (當然兩者可以並存);
主要原因在於,msysGit 和 TortoiseGit 對中文問題的支持不夠。雖然大多數中文問題,比如列表顯示、日誌顯示等可以修正的正常狀態,比如——
這裏
http://gotgit.github.com/gotgithub/10-appendix/040-install-on-windows-msysgit.html#msysgit-git
和這裏:http://www.cnblogs.com/baizx/archive/2010/08/09/1796120.html
但最終還是有一個遺憾:msysGit 和 TortoiseGit 不支持中文文件名和中文目錄名。
當然,有達人直接修改了這兩個軟件,以方便使用中文:http://www.cnblogs.com/tinyfish/archive/2010/12/17.html但似乎仍然不夠完美。
其實,只要把 msysGit 和 TortoiseGit 換掉,就可以徹底解決中文文件名的問題。
另外, git extensions 中一個小問題需要補充。
【git extensions 在 commit 的時候無法stage(加入暫存區)中文文件名的問題】
如下圖,在點擊 "Stage" 將中文文件名加入暫存區的時候,會報錯,git extensions 加入過程中最終讀成了亂碼。
解決方法是直接在文件上右鍵(這些右鍵功能是 Git Source Control Provider 提供的)Git 中 Add Files
然後在彈窗的窗口中點擊“添加文件”(注意不是點擊“顯示文件”)。
其實此處的“添加文件”就是 commit 窗口中的 Stage 操作,添加文件等同於添加到暫存區(stage)。在commit窗口中之所以無法正常添加(stage),估計是因爲它根據文件名添加,後一種方式是根據通配符"."進行添加,所以能夠成功。
當然,你也可以直接在資源管理器中,文件夾上右鍵,如下圖,點擊 "Git Extensions" -> "Add Files"
最後,你也可以直接在 cygwin 的命令行中,用 "git add ." 這幾個字母輕鬆搞定。
二)其他需要注意的中文問題
1)在 cygwin 命令行中設置 git,讓中文可以在命令行中順利顯示
git config --global core.quotepath false
2)創建文件的時候,請使用帶BOM(byte order mark)的utf-8格式
說明:如果不是utf-8,那麼在github上顯示就是亂碼;而且如果遷移到mono上,也會亂碼。
a)如果使用visual studio,默認建立的文件就是帶BOM的utf-8格式;
b)如果是在資源管理器裏直接創建文件,比如創建文本文件,它的編碼是系統編碼,不是utf-8,所以請創建之後用記事本打開文件,再重新另存爲utf-8格式;
c)在有些特殊場合(某些軟件比如expression web)創建的文件,雖然是utf-8,但不帶BOM,這時候需要使用工具將BOM顯式加入。
比如notepad++,在菜單的“格式”命令中,請選擇“轉爲 UTF-8 編碼格式”,如下圖所示——
如果使用vim,可以先後輸入 set bomb 和 set fileencoding=utf-8 兩個命令進行轉換。
3)配置 cygwin 使用 UTF-8
在 win7 下使用 cygwin,默認的 locale 是 utf-8,所以從 github 服務器上 pull 文件到本地,中文目錄、中文文件名等等,都能正常顯示,不用特別配置。
但如果在在win2003下使用 cygwin,默認的 locale 有時候不是utf-8,所以從 github 服務器上 pull 文件到本地,中文文件名就變成亂碼。此時,需要修改 locale 爲 utf-8 格式。修改方法:
打開文件C:\cygwin\Cygwin.bat,加上下面藍色那一行設置:
@echo off
C:
chdir C:\cygwin\bin
set LANG=C.UTF-8
bash --login -i
更多說明參考:http://www.cygwin.com/cygwin-ug-net/setup-locale.html
轉自: