3.用實(shí)例介紹如何使用 Pull Request 和 Merge 實(shí)現(xiàn)團(tuán)隊(duì)工作協(xié)同?
我們舉一個(gè)例子,Mary和John要開(kāi)發(fā)一個(gè)大工程——“星際航行”任務(wù)。John是項(xiàng)目總監(jiān),Mary是項(xiàng)目開(kāi)發(fā)人員。John有一個(gè)公開(kāi)的項(xiàng)目倉(cāng)庫(kù)Bitbucket。
Mary- fork正式項(xiàng)目
Mary首先要把John的Bitbucket倉(cāng)庫(kù)fork到自己的倉(cāng)庫(kù)里,開(kāi)始項(xiàng)目的開(kāi)發(fā)。點(diǎn)擊fork按鈕,然后為fork出來(lái)的倉(cāng)庫(kù)填寫(xiě)名字和描述,這樣Mary就有了服務(wù)端的項(xiàng)目拷貝了。
Mary克隆到她的本地Bitbucket倉(cāng)庫(kù)
Mary將自己剛才fork出來(lái)的Bitbucket倉(cāng)庫(kù),克隆到本地,在本地進(jìn)行接下來(lái)的工作。克隆命令如下:
git clone git@github.com: username/Bitbucket.git
Mary開(kāi)發(fā)新功能
在開(kāi)始開(kāi)發(fā)新功能之前,Mary先為新功能新建了一個(gè)分支feature,她會(huì)用這個(gè)分支作為Pull Request的源分支。
git checkout -b feature
在新功能分支上,Mary進(jìn)過(guò)幾天奮戰(zhàn),終于開(kāi)發(fā)出來(lái)了spacetravel.py文件。
然后添加、提交、push到自己的遠(yuǎn)程github端。
git add spacetravel.py
git commit -m "spacetravel to Mars"
git push origin feature
Mary發(fā)起Pull Request
這時(shí)她要通知John,自己已經(jīng)把項(xiàng)目新功能完成了。Bitbucket上有了她的功能分支后,Mary在她fork出來(lái)的倉(cāng)庫(kù)界面,點(diǎn)擊右上角的【Pull Request】按鈕,發(fā)起一個(gè)Pull Request。設(shè)置Mary的倉(cāng)庫(kù)為源倉(cāng)庫(kù),feature分支為源分支,目標(biāo)倉(cāng)庫(kù)為John的公開(kāi)倉(cāng)庫(kù),目標(biāo)分支為John的master分支。設(shè)置好之后,通知就會(huì)以系統(tǒng)消息或郵件發(fā)給John。
John要review Mary的Pull Request
在John的Bitbucket倉(cāng)庫(kù)頁(yè)面的【Pull Request】可以看到有人發(fā)起的Pull Request。點(diǎn)擊Mary的Pull Request會(huì)顯示出具體的描述、功能的提交歷史和每個(gè)變更的差異。
John看到之后打算合并到自己的主分支下,在按下【Merge】按鈕就可以同意Pull Request并合并到自己的master分支。
突然發(fā)現(xiàn)Mary的提交項(xiàng)目中有一個(gè)小bug,需要Mary先修復(fù)這個(gè)bug再進(jìn)行合并。John于是在整個(gè)Pull Request上加上評(píng)注,要求Mary先修復(fù)bug。
Mary于是修復(fù)bug,并重新提交,接著Pull Request到John。
John很滿(mǎn)意這次的提交文件,合并Mary的功能分支到自己的master主分支,并關(guān)閉Pull Request。
至此項(xiàng)目成功完成,宇宙飛船準(zhǔn)備飛往火星了。。。