1. 程式人生 > 實用技巧 >Git(二):Git的安裝配置與基本使用

Git(二):Git的安裝配置與基本使用

Git在Windows下的安裝

在Git首頁 http://git-scm.com/about可以下載適合你作業系統的最新版本的git,比如我當前使用的是Git-1.9.4-preview20140929.exe。

Git安裝過程中,一路預設即可。直到這個介面

30195625_ymNW.jpg

為了我們能夠在windows的cmd中執行Git的操作,我們選擇第二項。接下來再一路預設即可。安裝完成後,可以在cmd中輸入 git --version,檢查當前git是否已正確安裝。

設定Git

首先需要設定的是user.name和user.email這兩個全域性變數值。這兩個值用來說明當前操作Git的操作人與其聯絡方式,在你修改程式碼後便會留下你的"足跡"。"全域性"的意思是,你在這臺計算機上使用任何Git版本庫時,這些全域性變數都是起作用的。 示例如下,實踐中你得替換你自己的名字: git config --global user.name "Your Name"
git config --global user.email "[email protected]" 通過命令git config,使用者可以把此類資訊提供給本地版本庫,--global就是全域性配置的意思了。 用下列命令可檢查上述設定是否成功: git config --global --list 除此之外,我們通常還想將命令列中的輸出根據不同型別用不同的顏色顯示出來。可以設定以下命令。
git config --global color.ui "always" 在命令列中鍵入: git help <command>
,用希望瞭解的具體命令名稱替代<command>。Git將顯示使用者手冊中該命令的描述。

建立第一個專案

在這裡,我們以一個很小的HTML專案為例,使用Git來記錄和跟蹤這個專案,用以演示Git的基本操作。
建立版本庫 在Git中建立版本庫,首先要決定把專案原始碼存放在哪裡。本例中,要建立一個簡單的HTML頁面,所以給這個專案取名為mysite。首先建立一個同名目錄"mysite",並進入到這個目錄,然後輸入命令git init。整個過程如下: $ mkdir mysite $ cd mysite $ git init
命令git init會建立一個.git目錄。這個目錄用來存放版本庫的全部元資料,mysite目錄作為工作目錄樹,存放從版本庫中檢出的程式碼。
程式碼修改 現在該往版本庫中新增一個檔案了,現在我們建立一個名為index.html的檔案,並新增標題文字"html world"。詳細內容如下: <html> <body> <h1>hello world</h1> </body> </html> 建立完一個簡單的html檔案後,我們需要讓Git跟蹤這個檔案,要讓它知道這個檔案要分為兩步走:首先使用git add命令把該檔案新增到版本庫的索引(index);然後使用git commit命令提交。 $ git add index.html $ git commit -m "add in hello world HTML" git commit命令建立一個提交記錄。提交記錄是儲存在版本中的歷史記錄,每提交一次建立一個記錄,並標出程式碼的演進。Git把提交者的姓名和郵件地址,以及提交留言,都新增到提交記錄中。 前面命令中引數-m的作用是,告訴Git本次提交的留言為add in hello world HTML。對於任何版本控制系統,適當書寫的提交留言都是極其重要的。它可以說明提交的原因。

執行git log可以看到這個提交相關的資訊:30195625_mJv3.jpg


命令git log執行後輸出的第一行顯示提交名稱,該名稱是Git自動產生的SHA-1碼。Git通過它來跟蹤提交。Git使用該hash碼可以保證每個提交的名稱都是獨一無二的,這在分散式系統中非常重要。


在專案中工作 下面學習怎樣處理檔案修改。 這個HTML檔案裡還沒有<head>和<title>元素。下面為該檔案新增這些元素: <html> <head> <title>Hello World in Git</title> </head> <body> <h1>hello world</h1> </body> </html>

修改完畢,Git可以檢測到檔案被修改。命令git status會顯示工作目錄樹的狀態,即當前的檢視狀態。30195625_7Qxs.jpg

上面的輸出結果表明Git檢測到了修改,修改過的檔案在changed but not updated下列出來,如果要提交,須要暫存(stage)修改。 暫存修改,以準備把修改提交到版本庫。Git中有三個地方可以存放程式碼。第一個是工作目錄樹,編輯檔案時可以直接在這裡操作。第二個是索引(index),也就是暫存區(staging area)。暫存區是工作目錄樹和版本庫之間的緩衝區。第三個,也就是最終的一個,是版本庫。暫存區中存放的是準備提交到版本庫中的修改。

回頭看命令git add,它可以暫存對index.html剛剛做的修改,它跟前面章節中新增一個新檔案時使用的是同一個命令,只不過,這次它告訴Git要跟蹤的是一個新的修改而非新的檔案。

30195626_mPYp.jpg

暫存index.html後,執行命令 git status可以看到,輸出資訊中的標題從Changed but not updated變成了changes to be commited。如果打開了顏色開關,index.html這一行會由紅色變為綠色。 接下來,可以使用git commit提交在暫存區中的修改。 $git commit -m "add <head> and <title> to index" \ -m "This allows for a more semantic document" 注意這裡使用了兩個-m 引數。Git可以接受任意多次提交留言的輸入,每次另起一段。命令git log可以快速瀏覽提交留言。

30195626_8e1E.jpg


這裡引入了命令git log的一個新引數-1。可以通過改變該數字來限制命令git log輸出的提交條目的個數。


理解並使用分支 分支是維護專案中並行歷史記錄的方法。在實際應用中,有兩種分支比較有用:用來支援專案的不同釋出版本的分支,以及用來支援一個特定功能的開發的分支(常被稱為Topic Branch)。在本節中,介紹第一種。 當前mysite專案的程式碼可以釋出了,與此同時,藉助分支,可以開始下一版本的新功能的開發了。分支可以為要釋出的程式碼保留一份拷貝,所以無須停止正在開發的工作。建立分支的命令是git branch,該命令需要兩個引數:新分支名稱和父分支名稱。新建立的分支基於已經存在的父分支。 $ git branch RB_1.0 master 該命令從主分支(master branch)上建立一個叫RB_1.0的分支。主分支是Git的預設分支。分支名稱中的RB表示釋出分支(release branch)。該字首可以讓人快速分辨出哪些分支是釋出分支。 現在來做一些新的改動。這些改動不影響準備釋出的程式碼。下面給"bio"頁面新增一個連結,在</body>之前增加如下程式碼: <ul> <li><a href="bio.html">Biography</a></li> </ul> 然後使用下面命令提交這些修改: $ git commit -a -m "add bio.html" -a引數告訴Git提交全部修改過的程式碼。 現在主分支上有最新的修改,而釋出分支上還是原來的程式碼,請切換到釋出分支,最釋出前的最後修改。切換分支的命令是git checkout。 $ git checkout RB_1.0 在釋出前做最後的修改:在<head>標記塊中新增一些描述性的元標籤。程式碼如下所示: <head> <title>Hello World in Git</title> <meta name="description" content="hello world in Git"/> </head> 儲存並提交該修改: $git commit -a -m "add meta info" 處理髮布 現在準備釋出1.0版本了,要給它打個標籤。給Git中的程式碼打標籤,意味著在版本庫的歷史中標記出特定的點,這樣將來就容易找到相應版本的程式碼。因為是要做1.0版的釋出,所以打一個名為"1.0"的標籤: $git tag 1.0 RB_1.0 以上的命令中的兩個引數分別指明瞭標籤的名稱和希望打標籤的點,它們分別是1.0和RB_1.0分支的末梢(所對應的版本,或者說所對應的提交)。用不帶引數的命令git tag可以檢視版本庫中的標籤列表。目前只顯示了剛剛打過的標籤1.0: $git tag 1.0 現在要把RB_1.0分支上所做的修改合併到主分支上來。變基命令git rebase可以完成這項工作。變基是把一條分支上的修改在另一條分支的末梢重現。現在的版本樹如(a)圖所示,變基以後的版本樹如(b)圖所示。


30195626_RYor.jpg

首先使用git checkout切換回主分支。 $ git checkout master 接著執行命令git rebase,後面跟著一個引數:希望變基到哪條分支的末梢,就使用哪條分支名稱做引數。 $ git rebase RB_1.0 現在的版本庫就如(b)圖所示了。 最後,作為整理工作的一部分,刪除釋出分支RB_1.0。這看上去好像很危險,不過不用擔心,剛剛打的標籤已經記錄下了那個時候它的狀態了(只要標籤還在,從標籤到版本樹起點的一連串提交記錄就都在)。這時刪除該分支只是刪除了分支的名字,並不會刪除分支上的任何實際內容。 使用git branch -d 可以刪除分支: $ git branch -d RB_1.0 Deleted branch RB_1.0. 如果沒有釋出分支,將來如何給"1.0.x"分支打補丁呢?很簡單,只須從打標籤的地方再建立一條分支即可。這次依然使用git branch命令,當時命令的最後一個引數是新分支的父分支名稱,現在只須把父分支名稱改成釋出標籤名即可。命令如下: $ git branch RB_1.0.1 1.0 $ git checkout RB_1.0.1 Switched to branch "RB_1.0.1" 使用Git做的最後一件事是,為程式碼釋出建立歸檔檔案。通常情況下,將標籤對應的版本內容打包成一個tar包或zip包就夠了。一般在專案中打包操作可以使用maven執行,所以這裡就不介紹使用Git 的archive打包了。
克隆遠端版本庫 到目前為止,我們一直在介紹本地版本庫的操作,還沒有涉及到遠端版本庫。除了前面的功能外,Git也可以與遠端版本庫打交道,以分享本地的工作成果,或者複製其他的版本庫到本地。 要與遠端版本庫打交道,首先要用命令git clone克隆遠端版本庫,它會在本地建立遠端版本庫的完整拷貝。 在GitHub(一個提供Git版本庫託管服務的網站)上共享本書中mysite專案的全部拷貝,可以使用git clone來把它們克隆到本地。 $ git clone git://github.com/tswicegood/mysite.git mysite-remote 命令git clone帶有兩個引數:遠端版本庫的位置和存放該版本庫的本地目錄。第二個引數是可選的,但是在我的本地已經有wysite目錄,所以需要提供第二個引數指定遠端版本庫拷貝的目標目錄。在後面的章節還會介紹更多的引數,但是大多數情況下這兩個引數就足夠了。在後面的章節還會介紹Git把本地改動推入到遠端版本庫,以及從遠端版本庫取來改動。


轉載於:https://my.oschina.net/xinall/blog/350552