windows+git+ssh+vs2010 服務器與客戶端版本控制環境搭建

由於Linux等對於Git的完美支持,使得在其上搭建環境非常的方便,但是Git這麼方便使用且強大的工具,相比較於SVN等版本控制器顯得特別的突出,SVN是集中式版本控制工具,而Git是分佈式的版本控制工具。當前大部分的開源網站項目代碼大多數都是基於Git託管的,如,GitHub。

既然Git是這麼優秀的,那麼對於基於windows的用戶來說是不是顯得比較棘手,尤其是對於新手呢?在以前確實是這樣的,網上有很多這樣的文章,在windows上搭建一個linux環境,然後在這個環境之上再使用Git,如,Cygwin。但是現在我們完全使用另外一個免費的Copssh軟件,它的相比於Cygwin的好處大家可以上上網查找。

在這篇文章中,我們搭建的環境如下:

服務器端:(windows server 2003 Enterprise Edition Service Pack 2 ----32位)

Git(下載msysgit),我使用的版本是 Git-1.8.4-preview20130916.exe

Copssh(下載Copssh),我使用的是Copssh_3.1.4_Installer .zip,這個是免費版本的,不提供圖形界面的,當然你可以購買有圖形界面的,請支持正版,不過以前的版本也是可以的,有時間和精力可以自己試驗。

Gitextension(下載Gitextension),這個可以不用安裝,在服務器端我們可以使用命令來創建倉庫,如果要使用圖形化的界面就可以安裝這個。在這裏我們不安裝。

客戶端:(widows 7 旗艦版 service pack 1)

Git(下載msysgit),我使用的版本是 Git-1.8.4-preview20130916.exe

Putty(下載Putty),我使用的版本是putty-0.63-installer.exe,注意在下載的時候選擇“A Windows installer for everything except PuTTYtel” ,當然你也可以根據需要單獨下載需要的部分,但是還是建議載完全的版本。

Gitextension(下載Gitextension) 我使用版本是GitExtensions24703SetupComplete.msi,一般下載最近 版本 的即可。不過需要注意的是如果以前安裝過這些軟件,請提前卸載乾淨,程序生產的文件也要一起刪掉,建議以關鍵字“git”搜索磁盤,然後刪除和上述軟件相關的文件,避免在後面使用過程中出現不必要的錯誤。另外需要提醒的一點是,最好不要同時安裝Putty和TortoiseGit,主要原因(http://guides.beanstalkapp.com/version-control/git-on-windows.html#installing-git)中“ In caseyou have installed TortoiseGit”部分有講到

  • 一、服務器端的環境配置
1.1  首先我們需要在服務器端新建立一個賬戶(dev).

我的電腦————〉管理————〉系統工具——————〉本地用戶和組——————〉用戶。然後在顯示區域右鍵,選擇新用戶選項,添加新用戶,在這個界面上有“用戶下次登陸時修改密碼”選項,默認選中,那麼我們新增用戶結束之後回到顯示區域,必須重新在修改一次密碼,找到剛剛新建的用戶dev然後右鍵修改密碼,修改密碼即可,然後在左邊選擇“組”選項,把剛剛新建的用戶添加到Administrators組之中。 

1.2  Git安裝(Msysgit)安裝:我的Git安裝都是選擇默認配置,如下圖所示:         

(安裝位置的選擇默認即可,當然網上有很多說法是安裝路徑不能包含空格,那是其他的配置方式會出現,在這裏選擇默認即可)

             

上面的選項中“windows explorer integration” 意思是是否集成到鼠標右鍵中,默認是集成到鼠標右鍵,當然你安裝其他的工具(TortoiseGit)的時候可以不選擇這項,在右鍵中將看不到Git功能項,可以看到其他軟件提供的功能。
上面選項中選擇時建議選擇第一個(use git bash only)。其他選項自己看下面的解釋,有興趣可以上網查找。  

   上面選項風格的設置,默認第一個即可,當然你可以選擇其他項。
按照上面步驟,我們點擊右鍵將會看到對應GIt功能菜單,如下:

1.3 Copssh安裝:   

安裝路徑默認即可,若不想放在C盤,其他的分區之下也是可以的。


在這裏需要一個賬戶,我們系統中的賬戶(administrator等),這裏主要完成的是新建立一個賬戶。我們可以不用理會這個,直接安裝即可。



上圖顯示我們需要激活一個賬戶,如下圖


打開激活嚮導,在激活面板中我們選擇剛新建的用戶(dev),有可能還需要添加上域名,如下圖:


單擊下一步之後會提示激活成功,可以進行ssh連接了。

最後我們還需要檢查對應的服務是否啓動,這個是非常重要的,默認是沒有自動啓動服務的,當然你可以重啓系統之後服務將會自動啓動,這裏我們直接在系統的服務對話框中啓動服務即可,如下圖:


一定要保證服務“Open SSHD”服務是啓動的,如上圖所示。啓動服務的時候可能出現錯誤(錯誤編號是1069),出現這種錯誤,可能由於我們新建立的賬戶在第一次使用的時候需要重置密碼,如果我們重置密碼錯誤重現,那麼我們雙擊服務“Open SSHD”服務,在服務屬性中選擇“登陸選項卡”,在登錄身份中我們要保證賬戶時我們剛剛建立的賬戶(dev),如下圖所示:


1.4 服務器端配置SSH

我們找到Copssh 的安裝目錄(C:\Program Files\ICW\etc)在安裝目錄下我們可以發現ssh_config和sshd_config 文件,使用編輯器打開這兩個文件(使用記事本打開的時候可能出現亂碼),在ssh_config 文件中我們可以修改端口號(默認22),同時要將"PasswordAuthentication" 設置爲“no” ,在這兩個文件中必須保持修改是一致的,如下圖:

  

上圖示ssh_config 文件修改的地方,下圖是sshd_config文件修改的地方,我們保證這兩處修改一樣,保存在這兩個文件中的修改。


現在我們可以在客戶端的命令行模式下利用telnet命令來測試服務是否啓動,如果成功之後我們就進行下一步,不成功我們就要解決問題:

telnet  ip地址 端口


1.5 配置Repositories目錄

默認情況存庫(repositories)的目錄會在安裝目錄下home文件下創建一個用戶文件夾,在用戶文件夾中創建倉庫(如,C:\Program Files\ICW\home\dev),我們怎麼修改這個目錄呢?我們首先在在目錄(C:\Program Files\ICW\etc)下找到passwd文件,使用編輯器打開,我們將會看到下面的內容:

dev:unused_by_nt/2000/xp:1032:545:U-NETLAB-WIN2003\dev,S-1-5-21-3662530224-4034114269-2516470779-1032:/home/dev:/bin/bash

現在我們只需要替換 /home/dev 爲“/cygdrive/C/repositories”  其中“C:\”使用“/cygdrive/C/”來表示的。最後修改之後的內容如下:

dev:unused_by_nt/2000/xp:1032:545:U-NETLAB-WIN2003\dev,S-1-5-21-3662530224-4034114269-2516470779-1032:/cygdrive/C/repositories:/bin/bash

接下來我們在C盤下面新建文件夾repositories,然後在這個文件夾下面創建文件夾“.ssh”,如果我們還是按照windows下面的右鍵創建的話肯定是不行的(可以自己嘗試一下)。我們在windows的命令行模式下輸入下面的命令:

cd C:\repositories  

mkdir .ssh

之後在repositories文件下面就可以看到 .ssh文件夾了,在這個文件下面,我們創建一個空的文本文件(authorized_keys),這個文件主要是用來存儲客戶端的公鑰,稍後我們會用到。


二、客戶端配置

客戶端主要安裝putty、gitextension、git這三個軟件,git的安裝和在服務器端的安裝是一樣的,putty的安裝沒什麼可說的,全都是默認設置,當然你可以選擇其他的安裝路徑,至於gitextension的安裝,如果我先安裝了git那麼在安裝時有兩個選項“msysgit”和“kdiff3”,我們只選擇kdiff3,其他的一路next就行。安裝完成之後,點擊右鍵我們將會看到如下圖所示的功能菜單:

2.1   使用putty產生密鑰對。

首先在“開始”————〉“所有程序”————〉“putty”————〉“puttygen” ,然後點擊“generate”,不斷地在空白區域移動鼠標,程序將會生成rsa密鑰,這個過程可能持續一分鐘吧,主要看電腦的情況決定了。然後單擊“save private key” 把私鑰保存在本地磁盤的一個位置之下。

上圖中最上面的是公鑰,第二個密鑰註釋,下面連個是密碼,我們可以選擇密鑰生成的長度,默認即可。


上圖是生成的密鑰對私鑰的存放位置,網上有很多做法是把私鑰上傳到服務器上,在本地保存的是公鑰,這中做法有違密鑰安全的,公鑰在傳輸過程中還不害怕被竊取的,但是私鑰就不同了。如果要詳細瞭解可以上網搜索網絡安全相關的知識。

2.2  接下來我們要打開putty下pageant,把我們剛纔生成的私鑰文件加載進去,是他在後臺進行身份驗證。

打開pageant之後,我們單機“add key”然後找到剛保存的密鑰文件git_access_key.ppk文件,把密鑰加載進去,然後關閉這個窗口,在系統托盤中我們可以看到它的圖標。

 

2.3  上傳公鑰到服務器端

打開puttygen導入我們剛保存的密鑰文件,複製顯示區域的公鑰內容,可以通過文本或者郵件的形式發送給服務器端,在服務器端我們打開位置C:\repositories\.ssh下的authorized_keys文件,用編輯器打開,然後把公鑰內容複製進去即可,這個文件中可以保存很多的公鑰文件的。

2.4 測試ssh連接

在客戶端打開putty ,點擊session,在右邊設置IP地址和端口號,在connection下的SSH下的Auth,選擇private key的位置,然後點擊下面的Open ,如下圖所示:

設置IP地址和端口號


設置私鑰文件


第一連接的時候因爲本地沒有存儲主要的密鑰,因此詢問是否保存,選擇“是”,在客戶端C:\Users\用戶名\.ssh下的文件kown_hosts文件中就包含了服務器的祕密,我們可以 自己看一下,如果找不到那個文件,在C盤下搜索一下就能找到,


連接成功之後,就可以使用linux命令,如ls 、 pwd等。

三、在服務器端創建倉庫

在服務器端右擊“我的電腦”,選擇“屬性”下“高級”選項卡中的“環境變量”,在系統變量下點擊“新建” ,變量名爲 “GIT_SSH”,變量值是“C:\Program Files\ICW\Bin\ssh.exe” ,同時我們還要修改Path環境變量,在其變量值後添加“;C:\Program Files\Git\bin;C:\Program Files\Git\libexec\git-core”。

接下來我們創建一個bare repository ,首先在C:\repositories下創建一個文件夾 project_test,git,然後點擊右鍵,選擇Gti bash,輸入下面的命令:

git init --bare

之後就可以看到在該目錄下多了很多的文件。

四、gitextension配置

在客戶端我們使用的是Gitextension ,因此在Gitextension中我們要配置認證方式爲putty,並且在其中制定putty的路徑,如下圖:


Git Extension 配置


按照上圖配置putty,putty的路徑爲putty的安裝路徑。

五、客戶端Clone服務端倉庫

在客戶端單擊右鍵,在右鍵菜單中有“GitExt Clone…” 單擊之後出現下圖的畫面,首先就是指定要克隆的檔案庫,克隆的地址格式如下:

ssh://user@IP地址:/~/project_test.git 其中/~/ 表示我們在服務器端在passwd文件中配置的目錄(C:\repositories),當然我們可以在客戶端連接上服務器,通過下面的指令就能夠獲取到/~/的路徑:

cd ~

pwd


十分重要的一點時,在克隆的時候,我們要單擊“加載SSH祕鑰” ,找到我們前面保存的祕鑰文件(私鑰),然後單擊克隆,將會彈出下面的畫面:


在客戶端,我們成功的克隆了倉庫。

注:我們克隆的時候可能出現“bash:gt-upload-pack 命令沒有找到”的錯誤,這個是由於我們修改了環境變量,但是服務還沒有重新啓動,我們只需要重新啓動OpenSSH服務及可以了。可能還有其他的問題,上網搜一下。

六、VS2010配置git環境

在vs2010,如果我們安裝了gitextention 那麼在菜單欄將會出現Git菜單。單擊工具菜單,然後選擇“擴展管理器”,在彈出的對話框中搜索git source control provider 插件,然後重啓vs2010即可。

重啓之後可能需要我們輸入用戶名,郵件等信息,我們要保證下面界面上沒有紅色的出現:

然後我們新建一個web 項目,項目的位置爲剛剛我們從服務器端克隆 的文件夾下(project_test),我們會發現在解決方案中出現了加好,表示本地倉庫新增加的文件,如下圖:

然後我們在vs上找到Pending Changes(master) 界面,如下圖所示,在上面顯示了文件狀態,在comment中填寫信息(必須填寫),然後選擇我們要提交的文件,最後點擊上面的“commit”,提交我們的修改。



接下來我們要把我們的修改提交到服務器,首先在git菜單下找到push 菜單單擊,如下圖,在彈出的推送對話框中我們填寫push地址,和我們剛纔克隆的地址是一樣的,不過這次就不需要再加載SSH祕鑰。當涉及到多人或者團隊開發的時候,我們還要注意推送的分支,這個大家可以自己在以後專門學習git的使用,詳細的瞭解。



最後我們單擊推送,彈出下面的對話框就說明我們推送成功了。


七、實現Pageant自動加載祕鑰文件。

Pageant一直都是在後臺默默的運行着,主要負責和服務器端進行身份驗證,但是我們每次在啓動Pageant後都需要手動的加載祕鑰文件,這其實是一個比較煩的過程,我們怎麼能夠使其自動的完成呢?

首先我們找到Pageant的快捷方式,然後找到他的屬性,在彈出的對話框中,選擇“快捷方式”選項卡,找到“目標(T)”位置,應該顯示的是程序路徑(例如):

"D:\Program Files\PuTTY\pageant.exe"

我們在後面添加上私鑰文件git_access_key.ppk文件,如下:

"D:\Program Files\PuTTY\pageant.exe" "D:\Git\git_access_key.ppk"

那麼在每次在單擊這個快捷方式的時候,我們只需要輸入私鑰文件的密碼即可(當然私鑰文件是可以沒有密碼的)。其實我們也可以設置Pageant開機啓動的,目前還沒找到可以直接把私鑰文件密碼保存,啓動的時候直接加載,期望這一步都能省了最好,有誰知道可以告訴我(謝謝!)

八、Pageant開機啓動。

經過我的驗證,在生成祕鑰對的時候,如果不輸入密碼,那麼在Pageant啓動的時候是不會彈出對話框提示你輸入密碼的,那麼我們就可以完成開機啓動,讓他默默的工作。

首先在系統(win7)的開始(或者開始菜單的所有程序中)找到“啓動”菜單項,點擊右鍵“打開”,然後把Pageant的快捷方式粘貼到這裏就可以了。完成之後,可能360等安全工具會提示你“開機啓動項修改了”,你只需要同意就行,如果你不是很放心,那麼你在命令行下輸入:msconfig   。找到啓動選項卡,你就可以看到Pageant的開機啓動項,如下圖:


(結束)


參考文章:

http://www.nubaria.com/en/blog/?p=633

http://guides.beanstalkapp.com/version-control/git-on-windows.html

發佈了29 篇原創文章 · 獲贊 25 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章