1. 程式人生 > >Sourcetree的分支建立與合併

Sourcetree的分支建立與合併

一、Sourcetree簡單介紹

通過Git可以進行對專案的版本管理,但是如果直接使用Git的軟體會比較麻煩,因為是通過一條一條命令進行操作的。
這裡寫圖片描述
Sourcetree則可以與Git結合,提供圖形介面,使用會方便很多。Git和Sourcetree的安裝這裡就不多說,網上大把的教程。
這裡寫圖片描述

二、分支的建立與合併

1、建立一個遠端倉庫

在GitHub官網上建立一個新的遠端倉庫:
這裡寫圖片描述

2、用Sourcetree將這個遠端倉庫clone到本地

複製遠成倉庫的地址,然後利用改地址將遠端倉庫clone下來:
這裡寫圖片描述

這裡寫圖片描述
這樣,在本地就建立好了一個本地倉庫MainProject,可以到目標地址去檢視一下。

3、準備測試用工程

這裡建立一個android工程,不需要寫什麼程式碼。將建立好的整個android工程放到本地倉庫的資料夾中,然後推送到遠端倉庫,這樣測試用的工程基本準備好了:
這裡寫圖片描述

這裡寫圖片描述

4、建立分支

此時遠端倉庫中已經有一個專案了,下面模擬一個場景:假設有兩個程式猿Allen、Bill同時在開發這個專案,專案經理要求Allen增加一個聽歌的功能,要求Bill增加一個遊戲的功能,那此時這兩人就必須將遠端倉庫中的專案clone到他兩各自的本地(這裡就用一臺電腦模擬,clone兩次建立兩個本地倉庫):
這裡寫圖片描述

clone下來後會有一個預設的分支master,可以理解成主分支,那去進行專案開的話不會直接使用master,會去建立一個新分支進行開發,避免直接使用master改來改去最後一團糟那就該崩潰了。每個人在各自的新分支中開發完成後將新分支合併到主分支中就可以了。
接下來Allen和Bill各自建立一個新分支:Allen_dev和Bill_dev
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

那如果Allen和Bill在開發過程中想看看對方的程式碼,那就必須將各自建立的新分支推送到遠端倉庫,然後將對方的分支拉取下來,每次想看的話先獲取,然後再拉取最新的程式碼到本地倉庫即可。
這裡寫圖片描述

首次拉取別人的分支,在上面的獲取之後,按如下操作,這裡是Allen獲取Bill的分支Bill_dev,Bill獲取Allen的步驟一樣:
這裡寫圖片描述

注意:黑色加粗表示當前所處的分支,可以任意雙擊切換!
這裡寫圖片描述
這裡寫圖片描述

到此,各自的分支已經建立好了,下面Allen和Bill就可以在各自的新分支上進行專案經理安排的任務。

3、分支合併

Allen和Bill開啟各自本地倉庫中的專案程式碼進行開發,順利完成專案經理交代的任務,然後各自的分支推送到遠端倉庫:
這裡寫圖片描述

這裡寫圖片描述

此時雙方可以獲取最新程式碼,拉取最新分支程式碼,拉取完成後就可以看到對方所增加的內容:
這裡寫圖片描述

這裡寫圖片描述

此時,各自都想將對方的程式碼整合到自己的專案中,這是就需要分支的合併。例如Allen合併Bill的分支:
這裡寫圖片描述

合併完成後,可以看到之前開啟的Allen的Android工程,會發現Bill新增的功能已經在Allen的專案中顯示出來了。
這裡寫圖片描述

這裡寫圖片描述

最後不要忘了將各自合併後的分支推送。

現在Allen和Bill的工作已經完成了,各自的分支也推送到了遠端倉庫,此時專案經理就可以clone遠端倉庫的專案到本地,拉取Allen和Bill的提交的最新分支,將它們合併到主分支master中。這裡就拿最開始建立的MianProject看作是專案經理,合併完成並推送。
這裡寫圖片描述

3、解決衝突

到目前為止Allen和Bill各自進展順利,但是假若兩人同時在同一個檔案進行了操作,那最後合併時就會出現衝突。比如在MainActivity:
這裡寫圖片描述

這裡寫圖片描述

此時當Allen和Bill推送自己的分支到遠端倉庫後,專案經理MainProject拉取程式碼進行合併:
假設首先合併Allen_dev到master沒有問題,但是當合並Bill_dev到master時就會提示合併出現了衝突,需要解決。
這裡寫圖片描述
點選關閉,然後切換到檔案狀態,找到出現衝突的檔案,會有相應的衝突資訊:
這裡寫圖片描述

有衝突就要解決,右鍵單擊衝突檔案,選擇解決衝突,這裡有兩個選項:
1、使用 我的版本 解決衝突
2、使用 他人版本 解決衝突
這裡專案經理MainProject首先是將Allen的分支合併到主分支master,那麼“我的版本”就是對應的Allen的,“他人版本”對應的就是Bill的。如果首先合併Bill的分支,那麼對應關係就要對調一下。總的來說,“我的版本”對應的是首先合併到主分支master的。
採用一個人的版本,那麼在衝突檔案中就只會保留該人修改的程式碼,例如我這裡就選擇”使用 我的版本 解決衝突“,那麼在MainActivity中就只會保留Allen新增的程式碼。
這裡寫圖片描述
彈出對話方塊點選確定。

解決前:
這裡寫圖片描述

解決後:
這裡寫圖片描述

好了,到這為止基本的分支建立與合併的簡單應用,還有合併衝突解決就介紹完了。

生活不只是敲程式碼,如果你或你身邊的人喜歡攝影或者生活的點點滴滴,可以關注下我親愛的公眾號~
這裡寫圖片描述