作為對前兩天Git服務器搭建的一個整理,我想分別從服務端和客戶端兩個角度來記錄下整個搭建過程,為了達到目標,我們需要哪些操作。
(一)服務端軟件和賬號的安裝配置
我們這里只需要兩個軟件git和ssh,軟件版本如下,這兩個版本的安裝也是非常簡單,基本只要注意一點即可:安裝目錄最好不要用默認路徑,確保安裝路徑中沒有空格。其他步驟基本一路Next即可。
Git-1.8.1.2-preview20130201.exe Copssh_4.1.0_Installer.exe
安裝完成后,我們要做個關聯,主要是關聯git和ssh,因為我們這里git要用ssh協議來連接服務器。操作方法是將git中的相關文件copy到ssh的bin目錄中。
我這里這兩個軟件的安裝目錄分別為
//我的git安裝目錄 C:\git
//我的ssh安裝目錄 E:\ssh
//大家根據自己的安裝目錄,對下文提到的相關路徑做相應調整吧
//需要copy的git文件列表如下:
C:\Git\bin\ libiconv-2.dll
C:\Git\libexec\git-core\git.exe
C:\Git\libexec\git-core\git-receive-pack.exe
C:\Git\libexec\git-core\git-upload-archive.exe
C:\Git\libexec\git-core\git-upload-pack.exe
//將這些文件copy到ssh的bin目錄下,我這里對應的目錄為 E:\ssh\bin
接下來,我們需要在服務器上創建個賬號,普通賬號即可,我這里創建了個普通賬號叫git。
有了這個賬號,我們接下來利用ssh control panel 來創建個對應的ssh賬號,對應步驟截圖如下:




如上圖所示,這里我們選擇剛剛創建的專門賬號git

這里注意下,第一項 Allow password authentication沒有勾選

點擊Apply,ssh中賬號創建成功。
至此,服務器的配置已告一段落了,我們可以在服務器上創建個倉庫,以備后續的連接測試。由於我們之前創建了一個叫git的賬號,在ssh的安裝目錄下的home目錄里面,多了一個git目錄。
進入該目錄,右鍵選擇Git Bash,在命令行下,依次運行以下命令

1 mkdir myproject //創建我的項目目錄,命名為myproject 2 cd myproject //進入該目錄 3 touch helloworld.txt //在目錄下創建個文件,以備后續測試 4 git init //初始化該倉庫 5 git add . //當前目錄下所有文件都加入到暫存區 6 git config --global user.email “xxx@xxx.com” //創建全局git賬號 7 git config –global user.name “Jason Huang” //創建全局git賬號
8 git commit –m “init myproject repo”//將暫存區的文件全部提交到倉庫,並添加注釋
(二)客戶端軟件的安裝與配置
與服務端一樣,客戶端也需要安裝下git。
安裝完成后,需要創建個密鑰對,主要用於與服務端連接的認證。步驟比較簡單,打開Git Bash,輸入命令ssh-keygen,對於后續命令行提示輸入,一路默認回車即可。
根據提示,默認生成的密鑰對在當前用戶目錄下的.ssh目錄下。

接下來,為了使服務器認識我們的公鑰,我們需要將密鑰對中的公鑰上傳至服務器,用記事本打開剛剛生成的公鑰文件id_rsa.pub,復制里面的所有內容。
再回到服務器端,在我們之前創建的ssh的賬號git對應的目錄下home/git/.ssh,新建文件authorized_keys文件,注意這里沒有文件后綴名,將剛剛復制的公鑰粘貼進去,保存好。
最后,要確保服務器端口22是打開的,如果沒有打開,去防火牆配置下,至少保證入站端口22是打開的,因為這里ssh連接的默認端口是22。
至此,客戶端相關配置基本完成。我們可以開始clone了,創建一個目錄,然后Git Bash,運行以下命令
//這里我的服務器IP地址為192.168.1.168
git clone ssh://git@192.168.1.168:22/ssh/home/git/myproject
順便說一下,如果之后push的過程中出現提示“Push to origin/master was rejected”,解決方案是將下面的這段配置加載服務端項目的.git目錄下的config文件中
[receive]
denyCurrentBranch = ignore
That's all. 搭建過程中遇到了不少問題,從各位大神的文章中汲取了不少營養,非常感謝各位的分享,這里我也將我的一點經驗分享給大家,節省下大家寶貴的時間。
