Git在Eclipse上的應用--Egit插件--(三)

分支

前言

下面我們來說說Git的分支。

這裏寫圖片描述

打開Eclipse,點擊右上角紅圈位置,找到裏面的Git選項,雙擊打開。

這裏寫圖片描述

之後會出現這樣的界面,
這個面板是Egit的重要頁面(我們姑且叫它主界面),
很多操作我們都需要在這裏進行。(前面已經說過了)

我們一點一點說明。

第一個紅圈Branches就是分支。
其中local就是本地分支,Remote Tracking就是遠程分支。

引用廖雪峯前輩的分支介紹: 

分支就是科幻電影裏面的平行宇宙,
當你正在電腦前努力學習Git的時候,
另一個你正在另一個平行宇宙裏努力學習SVN。
你創建了一個屬於你自己的分支,
別人看不到,
還繼續在原來的分支上正常工作,
而你在自己的分支上幹活,
想提交就提交,
直到開發完畢後,
再一次性合併到原來的分支上,
這樣,
既安全,
又不影響別人工作。
(是不是很有散文風格?)

創建分支

我們如何新建一條分支呢?

我們在master分支上按右鍵(新的分支是基於master的),
選擇Switch to -> new Branch…。

然後在新出現的對話框輸入分支名字(這裏我起名爲dev),
然後確定就完成了一個分支的創建。

切換分支

這裏寫圖片描述

現在分支是這樣的。

其中dev分支的前面有個對號,說明當前我們就在這條分支上工作。

現在我們所有的操作都不會對master(主分支)造成任何影響。
我們來測試一下。

試着對程序做一些改動,然後add to index(添加到緩存區),
再然後commit(提交到本地倉庫)。

這裏寫圖片描述

我們發現dev分支後面的版本號(cc9c72d)以及註釋(增加了一句話)發生了變化,
而master則沒有發生變化。
我們嘗試切換回master分支,看看有沒有影響。

這裏寫圖片描述

我們在master分支上按右鍵,然後選擇checkout。回到項目中,看看我們剛纔的操作。
是不是又回到開始的狀態了?

這就是分支的效果,在實際項目中我們經常有這樣的情況:主分支功能都是經過運行測試的,
現在我們有一些新的功能要增加,而直接在主分支上操作可能會有意外發生。

這時我們就可以在本地新建一條分支,在新的分支上我們可以隨便做更改,直到程序正常運行。

合併分支

程序正常運行之後就要將新創建的分支(dev)和主分支(master)合併了。

這裏寫圖片描述

首先切換到主分支(master),然後在新建分支(dev)處右鍵選擇merge,提示框選擇確定。
這樣就完成了將新建分支合併到主分支的操作(注意從哪裏合併到哪裏要搞清楚)。

解決衝突

如果主分支和新建分支都做了修改,而且操作的可能是同一位置,那麼會出現什麼情況呢?

我們回滾到之前的版本,就是沒有合併分支的時間點。

在主分支上做一些修改。之後將主分支add to index然後commit。

這時可以來回切換分支看看是否有不同。

這裏寫圖片描述

現在切換回主分支,在新建分支處右鍵選擇merge(合併)。彈出窗口點擊確定。

這裏寫圖片描述

我們發現這時候出現了衝突(和SVN的衝突很像)。

HEAD下面代碼的就是我們合併之前的樣子(合併之前是處於主分支的,不要亂了),
下面會給出合併分支的名字(…/dev)。中間用====分割。
這樣我們很容易就會找到衝突的位置,並且解決它。

這裏寫圖片描述

假設我們修改好了代碼之後是這樣的,也就是把提示的信息都刪掉了,然後保存它。

這裏寫圖片描述

之後我們的項目會變成這個樣子。其中紅色表示衝突的文件。將衝突文件add to index,
然後將項目commit。會出現下面的提示。

Egit已經幫我們寫好了解決衝突後提交的註釋,如果需要可以更改,然後確定提交。

這裏寫圖片描述

刪除分支

如果我們覺得新的分支已經不需要了,那麼請切換至主分支,
然後在新建分支處按右鍵選擇Delete Branch(刪除分支)。

這裏注意,不能刪除當前所在的分支。比如你處於dev分支處,就不能刪除dev分支。
你可以先切換(checkout)到其它分支,然後再刪除它。

這裏寫圖片描述

Bug分支

接下來說說bug 分支。再次引用L大大的Bug分支說明:

當你接到一個修復一個代號101的bug的任務時,
很自然地,
你想創建一個分支issue-101來修復它,
但是,
等等,
當前正在dev上進行的工作還沒有提交
並不是你不想提交,
而是工作只進行到一半,
還沒法提交,
預計完成還需1天時間。
但是,必須在兩個小時內修復該bug,怎麼辦?
幸好,Git還提供了一個stash功能,
可以把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作

這裏寫圖片描述

我們在master分支做一些修改。這時候還沒有提交,Bug來了。

這時候我們只要在項目上按右鍵,選擇Team->Stashes->Stash Changes,

這裏寫圖片描述

然後在新出現的對話框中輸入一個名字,然後確定
這裏我就起名叫stash001。


確定之後我們會發現剛剛修改還未提交的代碼都不見了。 
也就是說目前的分支狀態是處於原始的,也就是沒有任何修改的狀態。

不用擔心,剛剛修改的東西都不會丟失。我們打開Git主界面Git Repositories。

這裏寫圖片描述

我們會發現References子項裏面多了一個refs/stash選項,後面有標記id和名稱stash001。

這時候我們就可以放心的解決Bug了。
當操作完成後我們切換回原來的分支,然後在項目上按右鍵,
選擇Team->Stashes->stash001(下面那幾個是我做測試生成的)。

這裏寫圖片描述

然後會出現這樣的界面。這個界面告訴我們之前我們都做了哪些修改,
Unstaged Changes裏面的類就是修改過的類,可以雙擊查看。

這裏寫圖片描述

現在點擊右上角紅圈位置的圖標,我們就會發現,剛纔的狀態都回來了。

(未完待續)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章