接續上篇文章 Git GUI – (2) 設定、Clone、Add、Modify

【四、建立分支(branch)】

如果有新功能要開發或是既有功能修改,但又不想影響到主要程式(master)的運作,這時候可以透過建立分支(branch),所有的修改動作都在「分支」中進行,各個分支是獨立作業的。比如要開發某個大功能,大功能中又切分很多細小的功能,我們可以在主線分支(master)下建立一個大功能分支,接著在大功能分支下,又切出許多細小功能的分支,也可以在分支的下面建立更細的分支,形成多重架構。當分支開發、測試結束後,再透過合併(merge)的動作,將所有分支合併回主線分支(master),或透過重造(rebase)的動作,將目前開發的分支(branch)提升為主線分支(master)。

  1. 在E:\GitDaal\下點選滑鼠右鍵,接著選取「Create Branch…」。
    image100.png    image101.png
  2. 輸入分支名稱,例如:newBranch。如果是要建立其它分支下的分支,Base On 的部份選擇 Branch 的選項,再選擇要基於哪個分支下建立新分支,這邊由於我們是基於主線分支(master)建立分支,因此選擇「HEAD (master)」。將「Switch to new branch」打勾,當分支建立完成後,會將目前的環境切換到新建立的分支下。
    image107.png
    image109.png
  3. 在新分支中編輯的東西,並不會影響到主線分支(master),當編輯到一段落,將新分支中的東西 commit 到本地倉儲(commit 請參考三、修改(新增)檔案)。點選滑鼠右鍵,選擇「Git Branch」->「master」可快速切換至 master。master 看見的 README.txt 與 newBranch 看見的 README.txt 是不一樣的。
    image111.png
    image113.png
  4. 如果不知道自己現在身處於哪個分支,只要點選滑鼠右鍵,就可以在上方紅色框框看到目前所在分支。「Git Branch」子選單下有打勾的就是目前分支。以及「Git Commit -> “newBranch”」也可以看到現在是在 newBranch 分支下。
    image117.png

【五、合併分支 (merge) 並解決衝突 (conflict)】

當新的分支開發到一個段落時,Git 可以提供我們合併(merge)的功能,意即將目前分支(newBranch)開發的結果合併到主線分支(master)。

  1. 滑鼠右鍵選單->「TortoiseGit」->「Merge」
    image119.png
  2. Branch 部份選擇要被合併的分支,我們要把 newBranch 合併回 master,因此選擇 newBranch。
    image124.png
    image126.png
  3. 若出現 Success 的字樣表示合併完成,沒有出現衝突的情況。此時視情況是否保留該 branch (可以理解成分支開發的子功能已經「加入」主線分支,該支線是否繼續保留開發功能或功成身退)。
  4. 如果合併時產生衝突(Conflict)的錯誤訊息,表示必須使用手動的方式來處理衝突。衝突的檔案會出現黃色三角形驚嘆號的圖樣。
    image129.png
    image131.png
  5. 在衝突的檔案上,開啟滑鼠右鍵 TortoiseGit 選單中的「Diff」。左邊是倉儲中上一個版本的檔案內容,只有五行內容,右邊則分為兩部分,從「<<<<<<< HEAD」到「=======」,表示最新版本中的內容,有六行內容,而「=======」到「>>>>>>> newBranch」是要合併的分支中的內容。此處視情況修改檔案內容,並把「<<<<<<< HEAD」「=======」「>>>>>>> newBranch」符號拿掉後存檔即完成修改。
    image133.png
    image135.png
  6. 修改完將檔案 commit 回本地倉儲。
    image243.png
  7. 接著選取滑鼠右鍵選單中的「Git History」,如下圖,上方為目前Git的分支狀況,修改者以及修改時間…等,下方為修改內容以及註解…等等資訊。
    image143.png
    image145.png

下一篇文章:Git GUI – (4) fetch、merge、pull、解決衝突情況(conflict)

參考資料:

  1. Git 教學(1) : Git 的基本使用 @ 好麻煩部落格
    http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
  2. Git 教學(2):Git Branch 的操作與基本工作流程 @ 好麻煩部落格
    http://blog.gogojimmy.net/2012/01/21/how-to-use-git-2-basic-usage-and-worflow/
  3. Git 情境劇 @ 好麻煩部落格
    http://blog.gogojimmy.net/2012/02/29/git-scenario/
  4. Git GUI – (1) TortoiseGit, msysgit 安裝 @ 蛙齋
    http://wazai.net/2563/git-gui-1-tortoisegit-msysgit-安裝
  5. Git GUI – (2) 設定、Clone、Add、Modify @ 蛙齋
    http://wazai.net/2569/git-gui-2-設定、clone、add、modify
  6. Git GUI – (3) branch、conflict、merge @ 蛙齋
    http://wazai.net/2734/git-gui-3-branch、conflict、merge
  7. Git GUI – (4) fetch、merge、pull、解決衝突情況(conflict) @ 蛙齋
    http://wazai.net/2737/git-gui-4-fetch、merge、pull、解決衝突情況conflict
相關文章

Git GUI – (4) fetch、merge、pull、解決衝突情況(conflict)

接續上篇文章 Git GUI - (3) branch、conf
2013-03-18 18:23:10
hans

18

Git GUI – (2) 設定、Clone、Add、Modify

依照上一篇文章 Git GUI - (1) TortoiseG
2013-03-18 18:21:24
hans

18

Git GUI – (1) TortoiseGit, msysgit 安裝

Git 是一個分散式版本控管的好工具(維基百科的 Git 介紹),這邊從簡單、有圖形化界面的開始吧!注意:小蛙也還
2013-03-18 18:20:10
hans

18

[參考文章] 使用 Git 做為網站開發版本控管工具

使用 Git 做為版本控管非常好用,網路上有很多 Git 教學文:
2013-01-02 17:20:24
hans

18

在 Eclipse 上開發 PHP 程式(以 Moodle、EGit、PDT 為例)

最近受命必須要研究 moodle,並且希望可以用 Eclipse 這種比較聰明的 IDE 來開發,而 moodle 本身是 PHP 寫的,之前只有使用 Eclipse 開發過 Java,這篇文章只是簡單記錄怎麼讓 Eclipse 可以開發
2012-12-19 17:24:56
hans

18

SSL For Free – 免費又有綠色鎖頭的 SSL Certificates

之前聽說 Google 會優先搜尋有 https 的網頁 (參考:
2016-07-07 23:00:54
hans

8

Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例

要進到這系列最後一篇文章了,這篇文章拖了很久,一直沒有時間整理,結果到最後 ... 程式碼留下來了,記憶卻有些模糊了,這邊小蛙配著程式碼盡可能的把還記得的東西寫下來。
2016-07-06 11:24:19
hans

8

Android Vuforia with jPCT-AE (4) – 載入 3DS 測試

延續 jPCT-AE Loader 載入模型的部份,這篇要記錄載入 3ds 檔案格式的方法,基本上跟前面幾個 obj, md2 的方法差不多,只有一些小小的變化而已。
2016-07-06 10:24:33
hans

8

Android Vuforia with jPCT-AE (3) – 載入 md2 測試

前兩篇介紹如何直接透過 jPCT-AE 直接繪圖以及載入 .obj 檔案,這邊繼續介紹 jPCT-AE 載入 md2 的方法,載入動作大致上類似,唯一不同的只有 texture 設定部份。
2016-07-06 09:24:43
hans

8




 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

   
© 2012 蛙齋 Suffusion theme by Sayontan Sinha