Git安裝使用手記

這篇主要是記錄我在 Windows 平臺安裝 Git 的過程和git的簡單使用。git

先描述一下安裝的需求:express

· 用戶端和服務器端的操做系統都是 Windows。服務器

· 用戶端要能透過 HTTP 的方式存取版本庫。ide

· 不管是取出檔案仍是送交檔案,都須要驗證身分(輸入帳號密碼)。測試

底下是安裝步驟:ui

Step 1: 安裝 Git for Windowsthis

在 Windows 環境使用 Git,能夠用 msysgit (Git for Windows),我安裝的版本是 v1.7.4。裝好以後,程序集裏面會多出一個選單:Git,裏面有兩個程序:Git GUI 和 Git Bash。前者是圖形操做界面,後者是命令列視窗。Git 的預設安裝目錄是c:\Program Files\Git。spa

因爲我要讓用戶端可透過 HTTP 協定來存取版本庫,所以還要把 Git 安裝目錄下的 bin\libiconv2.dll 複製到安裝目錄下的libexec\git-core\ 底下。少了這個動做,未來透過 HTTP 存取版本庫時,就會出現 HTTP 500 Internal Server Error 的訊息。以下圖所示:
操作系統

Step 2: 安裝 Apache HTTP Server版本控制

欲提供 HTTP 的存取方式,能夠利用Apache Http Server。我安裝的版本是 Apache 2.2.19(包含 OpenSSL)。

安裝好 Apache 以後,修改 httpd.conf,令它使用 8080 port,以避免和 IIS 搶 80 port。

接下來,同樣是修改 httpd.conf。找到 <directory> 標籤,確認其設定以下:

<directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

Allow from all

</directory>

接着在 httpd.conf 的最後面加入如下文字:

#Set this to the root folder containing your Git repositories.

# Git 你的版本庫放在哪裏

SetEnv GIT_PROJECT_ROOT D:/GitRepos

# Set this to export all projects by default (by default,

# git will only publish those repositories that contain a

# file named 「git-daemon-export-ok」

# 該目錄下的全部版本庫均可以透過 http(s) 的方式存取

SetEnv GIT_HTTP_EXPORT_ALL

# Route specific URLS matching this regular expression to the git http server.

# 令 Apache 把 Git 相關 URL 導向給 Git 的 http 處理程序

ScriptAliasMatch \

「(?x)^/(.*/(HEAD | \

info/refs | \

objects/(info/[^/]+ | \

[0-9a-f]{2}/[0-9a-f]{38} | \

pack/pack-[0-9a-f]{40}\.(pack|idx)) | \

git-(upload|receive)-pack))$」 \

「C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1″

 

<Location />

AuthType Basic

AuthName 」GIT Repository」

AuthUserFile 」D:/GitRepos/htpasswd」

Require valid-user

</Location>

其中第一道指令是告訴 Git 你的版本庫放在哪裏,第二道指令表示該目錄下的全部版本庫均可以透過 http(s) 的方式存取。第三道指令則是令 Apache 把 Git 相關 URL 導向給 Git 的 http 處理程序。注意:若是你的 Windows 系統是 64 位,裏面的C:/Program Files/…. 就要改一下。最後的 <Location> 區段設定了虛擬根路徑 「/」 的驗證規則,D:/GitRepos/htpassword 是帳號密碼文件。

完成上述修改以後,重啓 Apache HTTP 服務。

Note: 若是你但願未來透過遠端存取版本庫時,一概使用 http://my-server/git/* 開頭的 URL,則可將 ScriptAliasMatch 指令改成 「(?x)^/git/(.*/(HEAD | \ …….」

Step 3: 創建版本儲存庫

這裏先創建一個測試用的版本庫,以確認用戶端能夠透過 HTTP 協定取出檔案。步驟以下:

1 開啓 Git Bash 命令列視窗:開始 > 程序 > Git > Git Bash。

2 輸入如下命令,以創建一個空的版本庫(‘$’ 符號是提示字符,不用輸入):
$ cd D:/GitRepos
$ git init MyProject

參考下圖:

此範例的 git init 命令會在 MyProject 目錄下創建一個名爲「.git」的隱藏目錄,Git 用來管理版本所需的控制檔案全都放在這裏。MyProject 這個目錄自己則是工做目錄,你能夠在此目錄下加入檔案或子目錄。

Note: 在初次創建一個可以讓多人共享的版本庫時,應該要使用 git init –bare 命令。加上 –bare 的參數,表示要創建「單純的」版本庫,也就是不含任何工做複本(working copy)檔案,而只包含版本控制相關的檔案。

Note: 版本庫的根目錄(這裏是 D:\GitRepos)之下的第一層子目錄沒必要必定要創建成版本庫。咱們也能夠在其下創建單純的子目錄,而後在各個子目錄底下創建版本庫。例如:

D:\GitRepos

+– Projects

+– PrjA (版本庫)

+– PrjB (版本庫)

+– Notes

+– DotNet (版本庫)

這樣的話,之後咱們就能夠用相似「http://my-server/Projects/PrjA」的網址來存取版本庫。

Step 4: 取出版本庫

比較正確的說法,是把版本庫複製(clone)一份回本身家裏(本機)。同樣開啓 Git Bash 視窗,切換到你打算存放本機版本庫的目錄,而後使用 git clone 把檔案庫拉回來。指令以下:

$ cd d:/Work

$ git clone http://localhost:8080/MyProject

接着應該會要求你輸入帳號和密碼,若輸入正確,即可將本庫取回。參考下圖:

使用 git clone 命令時,網址也能夠包含使用者帳戶名稱,例如:

$ git clone http://michael@localhost:8080/MyProject

若是欲複製的遠端版本庫不是空的,Git 會先壓縮檔案再傳送,並且在熒幕上顯示壓縮的進度,以下圖:

下一步

後續的做業,就是在本機的工做目錄下進行平常的檔案修改與版本提交程序了。

Git 基礎做業流程

1 創建一個共享的版本庫。

2 將遠端主機上的版本庫複製一份至本機。

3 修改本機的工做複本,而後提交。

4 將提交的檔案推送至遠端主機的版本庫。

如下是範例:

1. 創建一個共享的版本庫

cd d:/GitRepos/Projects/MyProjectA

git init –bare
2. 將遠端主機上的版本庫複製一份至本機

git clone http://my-server:8080/Projects/MyProjectA

若是你的 Git 服務器支援 https:// 協定,則複製版本庫的指令會相似這樣:

git clone https://my-server/Projects/MyProjectA

若以 https:// 協定複製版本庫時出現錯誤:

error: SSL certificate problem, verify that the CA cert is OK. Details:

error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify faile

d while accessing https://localhost/Projects/test/info/refs

 

fatal: HTTP request failed
可嘗試如下列指令解決:

git config –global http.sslverify  false
此外,你也能夠在複製時直接指定帳號密碼,例如:

git clone https://michael:guesswhat@my-server/Projects/MyProjectA
若是這個「遠端主機」就是你目前工做的本機,即要在同一臺機器上覆製出另外一個版本庫,則能夠用 file:// 。例如:

git clone file://d:/GitRepos/Projects/MyProjectA
沒有加 file:// 或者寫 file:///(三個斜線)也能夠。

3. 修改本機的工做複本,而後提交

git add .

git commit -m 」提交時的說明文字「

4. 將提交的檔案推送至遠端主機的版本庫

git push origin master

其中的 push 表明要將變動推送至遠端服務器;origin 表明此 local 版本庫在遠端服務器的來源,你能夠從 local 版本庫的.git\config 檔案中找到這個遠端的 「origin」;最後的參數 master 則表明 master 分支。

因此上述指令的意思,以比較精確的解釋來講,就是:將本機的 master 分支的全部變動推送至遠端主機的 master 分支。

若是沒有指定 master 分支,只寫這樣:

git push origin

則表示要將本機的全部分支的變動推送至遠端主機的對應分支。

若要將本機的變動推送至遠端版本庫的其餘分支,例如 feature101,就能夠輸入指令:

git push origin feature101
其餘開發人員若是要取得最新的檔案,能夠在本身的 local 版本庫的目錄之下執行 git pull 命令。

以上大概就是最簡單、最基礎的 git 做業流程。

相關文章
相關標籤/搜索