一指巡、Sourcetree簡(jiǎn)單介紹
通過(guò)Git可以進(jìn)行對(duì)項(xiàng)目的版本管理蚤认,但是如果直接使用Git的軟件會(huì)比較麻煩队魏,因?yàn)槭峭ㄟ^(guò)一條一條命令進(jìn)行操作的振峻。
Sourcetree則可以與Git結(jié)合臼疫,提供圖形界面,使用會(huì)方便很多扣孟。Git和Sourcetree的安裝這里就不多說(shuō)烫堤,網(wǎng)上大把的教程。
1塔逃、創(chuàng)建一個(gè)遠(yuǎn)程倉(cāng)庫(kù)
在GitHub官網(wǎng)上創(chuàng)建一個(gè)新的遠(yuǎn)程倉(cāng)庫(kù):
2、用Sourcetree將這個(gè)遠(yuǎn)程倉(cāng)庫(kù)clone到本地
復(fù)制遠(yuǎn)成倉(cāng)庫(kù)的地址料仗,然后利用改地址將遠(yuǎn)程倉(cāng)庫(kù)clone下來(lái):
這樣,在本地就創(chuàng)建好了一個(gè)本地倉(cāng)庫(kù)MainProject伏蚊,可以到目標(biāo)地址去查看一下立轧。
這里創(chuàng)建一個(gè)android工程躏吊,不需要寫(xiě)什么代碼氛改。將創(chuàng)建好的整個(gè)android工程放到本地倉(cāng)庫(kù)的文件夾中,然后推送到遠(yuǎn)程倉(cāng)庫(kù)比伏,這樣測(cè)試用的工程基本準(zhǔn)備好了:
此時(shí)遠(yuǎn)程倉(cāng)庫(kù)中已經(jīng)有一個(gè)項(xiàng)目了,下面模擬一個(gè)場(chǎng)景:假設(shè)有兩個(gè)程序猿Allen赁项、Bill同時(shí)在開(kāi)發(fā)這個(gè)項(xiàng)目葛躏,項(xiàng)目經(jīng)理要求Allen增加一個(gè)聽(tīng)歌的功能澈段,要求Bill增加一個(gè)游戲的功能,那此時(shí)這兩人就必須將遠(yuǎn)程倉(cāng)庫(kù)中的項(xiàng)目clone到他兩各自的本地(這里就用一臺(tái)電腦模擬舰攒,clone兩次創(chuàng)建兩個(gè)本地倉(cāng)庫(kù)):
clone下來(lái)后會(huì)有一個(gè)默認(rèn)的分支master败富,可以理解成主分支,那去進(jìn)行項(xiàng)目開(kāi)的話(huà)不會(huì)直接使用master摩窃,會(huì)去創(chuàng)建一個(gè)新分支進(jìn)行開(kāi)發(fā)兽叮,避免直接使用master改來(lái)改去最后一團(tuán)糟那就該崩潰了。每個(gè)人在各自的新分支中開(kāi)發(fā)完成后將新分支合并到主分支中就可以了猾愿。
接下來(lái)Allen和Bill各自創(chuàng)建一個(gè)新分支:Allen_dev和Bill_dev
那如果Allen和Bill在開(kāi)發(fā)過(guò)程中想看看對(duì)方的代碼鹦聪,那就必須將各自創(chuàng)建的新分支推送到遠(yuǎn)程倉(cāng)庫(kù),然后將對(duì)方的分支拉取下來(lái)蒂秘,每次想看的話(huà)先獲取泽本,然后再拉取最新的代碼到本地倉(cāng)庫(kù)即可。
首次拉取別人的分支材彪,在上面的獲取之后观挎,按如下操作,這里是Allen獲取Bill的分支Bill_dev段化,Bill獲取Allen的步驟一樣:
注意:黑色加粗表示當(dāng)前所處的分支嘁捷,可以任意雙擊切換!
到此显熏,各自的分支已經(jīng)創(chuàng)建好了雄嚣,下面Allen和Bill就可以在各自的新分支上進(jìn)行項(xiàng)目經(jīng)理安排的任務(wù)。
Allen和Bill打開(kāi)各自本地倉(cāng)庫(kù)中的項(xiàng)目代碼進(jìn)行開(kāi)發(fā)缓升,順利完成項(xiàng)目經(jīng)理交代的任務(wù),然后各自的分支推送到遠(yuǎn)程倉(cāng)庫(kù):
此時(shí)雙方可以獲取最新代碼蕴轨,拉取最新分支代碼港谊,拉取完成后就可以看到對(duì)方所增加的內(nèi)容:
此時(shí),各自都想將對(duì)方的代碼整合到自己的項(xiàng)目中橙弱,這是就需要分支的合并歧寺。例如Allen合并Bill的分支:
合并完成后,可以看到之前打開(kāi)的Allen的Android工程棘脐,會(huì)發(fā)現(xiàn)Bill添加的功能已經(jīng)在Allen的項(xiàng)目中顯示出來(lái)了斜筐。
最后不要忘了將各自合并后的分支推送。
現(xiàn)在Allen和Bill的工作已經(jīng)完成了蛀缝,各自的分支也推送到了遠(yuǎn)程倉(cāng)庫(kù)顷链,此時(shí)項(xiàng)目經(jīng)理就可以clone遠(yuǎn)程倉(cāng)庫(kù)的項(xiàng)目到本地,拉取Allen和Bill的提交的最新分支屈梁,將它們合并到主分支master中嗤练。這里就拿最開(kāi)始創(chuàng)建的MianProject看作是項(xiàng)目經(jīng)理榛了,合并完成并推送。
到目前為止Allen和Bill各自進(jìn)展順利忽冻,但是假若兩人同時(shí)在同一個(gè)文件進(jìn)行了操作,那最后合并時(shí)就會(huì)出現(xiàn)沖突此疹。比如在MainActivity:
此時(shí)當(dāng)Allen和Bill推送自己的分支到遠(yuǎn)程倉(cāng)庫(kù)后僧诚,項(xiàng)目經(jīng)理MainProject拉取代碼進(jìn)行合并:
假設(shè)首先合并Allen_dev到master沒(méi)有問(wèn)題,但是當(dāng)合并Bill_dev到master時(shí)就會(huì)提示合并出現(xiàn)了沖突蝗碎,需要解決湖笨。
點(diǎn)擊關(guān)閉,然后切換到文件狀態(tài)蹦骑,找到出現(xiàn)沖突的文件慈省,會(huì)有相應(yīng)的沖突信息:
有沖突就要解決,右鍵單擊沖突文件眠菇,選擇解決沖突边败,這里有兩個(gè)選項(xiàng):
1、使用 我的版本 解決沖突
2捎废、使用 他人版本 解決沖突
這里項(xiàng)目經(jīng)理MainProject首先是將Allen的分支合并到主分支master笑窜,那么“我的版本”就是對(duì)應(yīng)的Allen的,“他人版本”對(duì)應(yīng)的就是Bill的登疗。如果首先合并Bill的分支排截,那么對(duì)應(yīng)關(guān)系就要對(duì)調(diào)一下》妫總的來(lái)說(shuō)断傲,“我的版本”對(duì)應(yīng)的是首先合并到主分支master的。
采用一個(gè)人的版本智政,那么在沖突文件中就只會(huì)保留該人修改的代碼认罩,例如我這里就選擇”使用 我的版本 解決沖突“,那么在MainActivity中就只會(huì)保留Allen添加的代碼续捂。
彈出對(duì)話(huà)框點(diǎn)擊確定垦垂。
解決前:
解決后:
到這為止基本的分支創(chuàng)建與合并的簡(jiǎn)單應(yīng)用,還有合并沖突解決就介紹完了疾忍。
原文地址:http://blog.csdn.net/qq_34975710/article/details/74469068