經過Git能夠進行對項目的版本管理,可是若是直接使用Git的軟件會比較麻煩,由於是經過一條一條命令進行操做的。
Sourcetree則能夠與Git結合,提供圖形界面,使用會方便不少。Git和Sourcetree的安裝這裏就很少說,網上大把的教程。 android
在GitHub官網上建立一個新的遠程倉庫: 測試
複製遠成倉庫的地址,而後利用改地址將遠程倉庫clone下來: .net
這樣,在本地就建立好了一個本地倉庫MainProject,能夠到目標地址去查看一下。blog
這裏建立一個android工程,不須要寫什麼代碼。將建立好的整個android工程放到本地倉庫的文件夾中,而後推送到遠程倉庫,這樣測試用的工程基本準備好了: 教程
此時遠程倉庫中已經有一個項目了,下面模擬一個場景:假設有兩個程序猿Allen、Bill同時在開發這個項目,項目經理要求Allen增長一個聽歌的功能,要求Bill增長一個遊戲的功能,那此時這兩人就必須將遠程倉庫中的項目clone到他兩各自的本地(這裏就用一臺電腦模擬,clone兩次建立兩個本地倉庫): 遊戲
clone下來後會有一個默認的分支master,能夠理解成主分支,那去進行項目開的話不會直接使用master,會去建立一個新分支進行開發,避免直接使用master改來改去最後一團糟那就該崩潰了。每一個人在各自的新分支中開發完成後將新分支合併到主分支中就能夠了。
接下來Allen和Bill各自建立一個新分支:Allen_dev和Bill_dev 圖片
那若是Allen和Bill在開發過程當中想看看對方的代碼,那就必須將各自建立的新分支推送到遠程倉庫,而後將對方的分支拉取下來,每次想看的話先獲取,而後再拉取最新的代碼到本地倉庫便可。 開發
首次拉取別人的分支,在上面的獲取以後,按以下操做,這裏是Allen獲取Bill的分支Bill_dev,Bill獲取Allen的步驟同樣: get
注意:黑色加粗表示當前所處的分支,能夠任意雙擊切換!
it
到此,各自的分支已經建立好了,下面Allen和Bill就能夠在各自的新分支上進行項目經理安排的任務。
Allen和Bill打開各自本地倉庫中的項目代碼進行開發,順利完成項目經理交代的任務,而後各自的分支推送到遠程倉庫:
此時雙方能夠獲取最新代碼,拉取最新分支代碼,拉取完成後就能夠看到對方所增長的內容:
此時,各自都想將對方的代碼整合到本身的項目中,這是就須要分支的合併。例如Allen合併Bill的分支:
合併完成後,能夠看到以前打開的Allen的Android工程,會發現Bill添加的功能已經在Allen的項目中顯示出來了。
最後不要忘了將各自合併後的分支推送。
如今Allen和Bill的工做已經完成了,各自的分支也推送到了遠程倉庫,此時項目經理就能夠clone遠程倉庫的項目到本地,拉取Allen和Bill的提交的最新分支,將它們合併到主分支master中。這裏就拿最開始建立的MianProject看做是項目經理,合併完成並推送。
到目前爲止Allen和Bill各自進展順利,可是倘若兩人同時在同一個文件進行了操做,那最後合併時就會出現衝突。好比在MainActivity:
此時當Allen和Bill推送本身的分支到遠程倉庫後,項目經理MainProject拉取代碼進行合併:
假設首先合併Allen_dev到master沒有問題,可是當合並Bill_dev到master時就會提示合併出現了衝突,須要解決。
點擊關閉,而後切換到文件狀態,找到出現衝突的文件,會有相應的衝突信息:
有衝突就要解決,右鍵單擊衝突文件,選擇解決衝突,這裏有兩個選項:
一、使用 個人版本 解決衝突
二、使用 他人版本 解決衝突
這裏項目經理MainProject首先是將Allen的分支合併到主分支master,那麼「個人版本」就是對應的Allen的,「他人版本」對應的就是Bill的。若是首先合併Bill的分支,那麼對應關係就要對調一下。總的來講,「個人版本」對應的是首先合併到主分支master的。
採用一我的的版本,那麼在衝突文件中就只會保留該人修改的代碼,例如我這裏就選擇」使用 個人版本 解決衝突「,那麼在MainActivity中就只會保留Allen添加的代碼。
彈出對話框點擊肯定。
解決前:
解決後:
到這爲止基本的分支建立與合併的簡單應用,還有合併衝突解決就介紹完了。
原文地址:http://blog.csdn.net/qq_34975710/article/details/74469068