顯示具有 GUI 標籤的文章。 顯示所有文章
顯示具有 GUI 標籤的文章。 顯示所有文章

2012年7月14日 星期六

Cola Git GUI (1)

Git 使用 Cola Git GUI (1)

Cola git 是一個 Linux 底下的 git 視窗程式,藉由 Cola git 我們可以先練習 git 在 local repository 的基本操作。


Git 安裝

以下我們以 Ubuntu Linux 與 Cola git 為操作環境,首先需要在 Ubuntu 系統中安裝 git 以及 cola git,可以於終端機執行以下指令安裝:
$ sudo apt-get install git-core git-cola
或是使用 Ubuntu 軟體中心安裝 git-core 與 git-cola


初始化 repository

安裝完 git 之後需要為 git repository 準備一個資料夾,以 Cola-Git_Test 這個資料夾作為示範。

假設想要維護一個新的軟體專案,可開啟終端機於 Cola-Git_Test 目錄下開一個新的 repository:
#切換至 Cola-Git_Test 資料夾

cd Cola-Git_Test

#初始化 git repository,這會於 Cola-Git_Test 資料夾內產生 .git 資料夾

$ git init 



開啟 Cola Git

將資料夾初始成 git repository 後即可使用 Cola git 開啟此資料夾,點擊 open 可開啟本地端的 repository。

選擇剛才建立的 repository - Cola-Git_Test


接著會自動開啟 Cola git 圖形界面!


新增檔案

接著我們可以在 Cola-Git_Test 資料夾底下嘗試新增一些檔案,看看如何使用 Cola Git 來管理它。先建立一個 main.c 實驗一下:


儲存 main.c 檔案之後接著回到 Cola Git 來觀察一下發生甚麼變化,可以在 action 子窗格中執行 Rescan 操作,此時 Cola Git 會幫我們檢查 Working directory (以此範例而言是Cola-Git_Test 資料夾)是否有新的修改發生,會發現 Repository Status 中出現一個未追蹤檔案的新紀錄 Untracked -> main.c。


Stage

我們可以將 main.c 這個檔案先新增到 staging area 暫存,可以在 action 子窗格中執行 Stage 操作,因此 main.c 會顯示成 Staged 狀態:


Commit

緊接著準備將這一筆 staged 的暫存紀錄 commit 到 repository,先於 Commit Message Editor 中寫下這一筆紀錄的註記訊息,接著點擊 Commit 即於 repository 增加一筆新的 commit。


當然我們可以檢視剛才新增的這一筆 commit 紀錄,可以至選單 Branch->Visualize Current Branch 檢視目前的 branch:


目前的 branch 會以 gitk 視窗顯示,可以看到目前是在 master branch(也就是預設的分支),以及剛才 commit 的紀錄與註記訊息,此外 Git 會依據 commit 內容自動計算出唯一的 SHA1 ID,假設日後新增了許多新的 commit ,可以依據 SHA1 ID 快速的找回以前的 commit。


有一就有二,馬上試著新增第二筆紀錄吧!
先在 main.c 檔案中增加幾行:


接著 Rescan 檢查 working directory 是否有修改:
仔細留意這次 Repository Status 顯示為 Modified,與第一次新增檔案時 Untracked 的狀態不同。


同樣需要把 working directory 的修改放到 staging area:


接著新增第二筆 commit 紀錄:



新增完第二筆 commit 之後,可從選單 Branch->Visual Current Branch 瀏覽目前的版本分支:
可以看到視窗中顯示兩筆 commit 紀錄,以及 master 分支指向目前最新一筆的 commit。


實際上在一般開發的過程中,通常會重複以上步驟持續將版本演進成線性的 master branch (預設/主幹分支),然而許多時候開發過程中伴隨著其他外複雜的情況,例如想要做某些實驗性新功能,想針一些已知 bug 改寫一版 debug 版本,由於這些都屬於實驗性階段通常不會直接放在 master branch,因此我們接下來就一起來運用 Git 方便的 branch 功能,將這些實驗性質的操作放到新的 branch 中管理。


Branch 分支使用與管理

接下來示範 Cola Git branch 的使用方式,事實上可以從任意一個 commit 紀錄衍生出新的 branch,只要先選定某個 branch -> 按下滑鼠右鍵 -> Create New Branch:



為新的 branch 命名,假設這個新的 branch 預計用來修改已知 bug,因此將它命名為 Bug01然後建立新的 branch:


建立 bug01 branch 之後可以看到目前有兩個 branch,一個是預設的 master 另一個是剛才新增的 bug01,為了編輯 Bug01 需要將它 checkout 到 working directory 中:



Checkout 之後需要先將 gitk 視窗以及 Cola Git 視窗關閉,並重新開啟 Cola Git:
可觀察到目前 branch 已經為 Bug01 branch(紅色方框所示)



現在 working directory - Cola-Git_Test 資料夾已經對應到 Bug01 branch,因此接下來若對於 working directory 做的更動 commit 之後會被紀錄在 Bug01 branch 中。

讓我們先對 Cola-Git_Test 資料夾做一些更動,編輯 main.c 加入 bug01 處理:




回到 Cola Git 視窗中,快速完成 Rescan、Stage、填寫 Commit Message 以及 Commit 新紀錄:



檢視目前的 commit 紀錄,Branch -> Visualize All Branches:
可以看到最新的 Bug01 branch 指向最新筆 commit,而 master 仍停留在之前的 commit 。



實際上開發軟體的過程中時常會有額外的情況或是需求發生,假設在 debug 的同時突然想到新功能要加入,不過 debug branch 可能仍在測試階段暫時不會靶心功能直接加在 debug branch 上,於是可以回到先前較穩定的版本上,開另一個 branch 將開發流程分開進行。例如可以回到第二筆 commit 版本新增一個 feature01 branch 進行新功能開發:


設定 branch 名稱並建立新的 branch - Feature01:


然後將 Feature01 checkout,關閉 gitk 以及Cola Git 回到 working directory 去工作吧!
這一次我們新增多一點東西,除了在 main.c 加入新的程式碼,另外開了一個 feature.c 檔案:



接著開啟 Cola Git 先確認一下目前是不是在 Feature01 branch,如果不是可以至 Branch -> Checkout 設成 Feature01,接著 Rescan 剛才 working directory 所作的修改,選取 main.c 以及 feature.c 對兩個更動的檔案 Stage:


想必大家一定熟悉接下來的操作,填上 Commit Message 並且 Commit 一筆新紀錄:


 當然我們可以檢視最新的 Commit 狀況,Branch->Visualize All Branches:


至目前為止是否已經感受到 Git branch 的特色呢?無論開發人員開多少個 branches 無論開發流程如何錯綜複雜,working directory 永遠只會有一份內容,其他的 branches 、commits 都是由 Git 幫忙維護管理,修改後就 commit 給 Git repository 需要時就從 repository checkout 出來。


Merge 合併分支

假設目前 Feature01 以及 Bug01 兩個分支已經發展到一個相對穩定程度,接下來想要將兩個版本合併可以藉由 git 的 merge 來達成。
點選選單 Action -> Merge。



接著會跳出 Merge 設定視窗,由於目前是在 Feature01 底下我們選擇與 Bug01 做 marge:


若沒有衝突發生 Merge 將直接產生新的版本,可以觀察 main.c 的結果是不是兼具 debug 以及 feature 的程式碼:


此外還能使用 Branch -> Visualize All Branches 檢查最新的分支狀態:


認識了以上方法,想必大家都能透過 Git 在自己電腦上進行完整且便利的版本控管囉!