Git 命令行(cygwin) + Git Extensions + Git Source Control Provider

在《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 改成它自己的,你可以在“全局設置”中改回來。

 

補充1git 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,默認建立的文件就是帶BOMutf-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

 

轉自:

http://www.cnblogs.com/shiningrise/archive/2012/05/02/2479517.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章