說來慚愧翔悠,這么長時間,第一次參與修改開源項(xiàng)目,所以整理了一份GitHub團(tuán)隊(duì)協(xié)作流程阻课,作為備忘叫挟,文章大部分內(nèi)容參考<a target='_blank'>https://www.cnblogs.com/schaepher/p/4933873.html</a>
GitHub開發(fā)流程
- 零、前期準(zhǔn)備
- 一限煞、創(chuàng)建開發(fā)分支
- 二抹恳、Fork項(xiàng)目到個人的倉庫
- 三、Clone項(xiàng)目到本地
- 四署驻、和團(tuán)隊(duì)項(xiàng)目保持同步
- 五奋献、push修改到自己的項(xiàng)目上
- 六、請求合并到團(tuán)隊(duì)項(xiàng)目上
- 七旺上、團(tuán)隊(duì)項(xiàng)目負(fù)責(zé)人審核及同意合并請求
注:其中 零瓶蚂、一、七 是由團(tuán)隊(duì)項(xiàng)目負(fù)責(zé)人來完成的宣吱。開發(fā)人員只要從 二 開始就行了窃这。
零、前期準(zhǔn)備
首先把隊(duì)友直接push的權(quán)限關(guān)掉征候,即設(shè)置成Read杭攻。這樣可以防止隊(duì)友誤操作,未經(jīng)審核就把代碼push到團(tuán)隊(duì)項(xiàng)目上倍奢。
Teams用來分配issue的時候會用到朴上,所以保留下來,并不是沒有用卒煞。
一痪宰、創(chuàng)建開發(fā)分支
master分支一般用來發(fā)布穩(wěn)定版本,dev分支(開發(fā)分支)用來發(fā)布開發(fā)版本畔裕。
輸入分支名稱后衣撬,下面會跳出Create branch,點(diǎn)擊即可創(chuàng)建扮饶。
下面圖片寫的是develop具练,是因?yàn)槲覀冞@個項(xiàng)目已經(jīng)有dev分支了。如果你們沒有dev分支甜无,那么名字改成dev即可扛点。這個影響不大。
分支創(chuàng)建完畢后岂丘,會自動跳轉(zhuǎn)到dev分支陵究。由于dev分支是從master分支上創(chuàng)建的,因此內(nèi)容與master分支一致奥帘。
二铜邮、Fork項(xiàng)目到個人的倉庫
點(diǎn)擊右上角的Fork,并選擇你的賬號(一般在第一個)。就可以Fork團(tuán)隊(duì)項(xiàng)目到個人倉庫啦松蒜。
Fork完成后
三扔茅、Clone項(xiàng)目到本地
首先是clone,clone的地址可以直接點(diǎn)擊按鈕復(fù)制(如下圖)秸苗。
推薦使用SSH協(xié)議召娜,用HTTP協(xié)議有時會出問題。
注意惊楼,這里clone的是你自己倉庫里的項(xiàng)目
打開git命令行萤晴,輸入指令和剛才復(fù)制的地址,回車即可克隆到本地
此時你只能看到master分支胁后,并沒有把dev分支clone下來店读。使用 git branch 命令查看本地分支,發(fā)現(xiàn)本地只有master分支攀芯。如下圖的①
如上圖的②屯断,使用 git branch -a 查看所有分支,就能看到遠(yuǎn)程分支侣诺。
根據(jù)遠(yuǎn)程分支殖演,我們可以創(chuàng)建一個新的本地分支dev,并把該項(xiàng)目的dev分支的內(nèi)容放到本地dev分支年鸳。如上圖③趴久。
git checkout -b dev origin/dev 的意思是,創(chuàng)建一個dev分支(-b)搔确,并把遠(yuǎn)程dev分支(origin/dev)的內(nèi)容放在該分支內(nèi)彼棍。接著切換到該分支(checkout)
現(xiàn)在使用 git branch 可以查看兩個分支亭饵,并且用 ls 或者 dir 就能看到dev分支的內(nèi)容了捍壤。想切換回master分支的時候,再用 git checkout master 即可愕提。
上面的操作完成后涕蜂,你就可以在本地進(jìn)行開發(fā)了华匾。但是如果要將你修改完的代碼合并到團(tuán)隊(duì)項(xiàng)目上,還需要進(jìn)行下面的操作机隙。
四蜘拉、和團(tuán)隊(duì)項(xiàng)目保持同步
首先查看有沒有設(shè)置upstream,使用 git remote -v 命令來查看有鹿。如下圖①
如果沒有顯示upstream旭旭,則使用 git remote add upstream 團(tuán)隊(duì)項(xiàng)目地址 命令。如上圖②
接著再次使用 git remote -v 印颤,如果如上圖③您机,顯示出了upstream穿肄,那么就設(shè)置好了
開始同步年局。首先執(zhí)行 git fetch upstream 獲取團(tuán)隊(duì)項(xiàng)目最新版本际看。如下圖①
此時并沒有把最新版本合并到你本地的分支上,因此還需要一步矢否。如上圖②仲闽,當(dāng)前分支是dev分支,執(zhí)行 git merge upstream/dev 命令后僵朗,會將源分支(upstream/dev)合并到當(dāng)前分支(dev)赖欣。
如果你是在本地的master分支上開發(fā),那么在使用該命令前验庙,先切換到master分支顶吮。
merge的時候,有可能碰到?jīng)_突粪薛。需要解決沖突才能繼續(xù)下面的操作悴了。沖突的解決可以參考→ 沖突的解決
五、push修改到自己的項(xiàng)目上
解決沖突后违寿,就可以使用 git push 命令將本地的修改同步到自己的GitHub倉庫上了湃交。
注意,在當(dāng)前所在分支使用push藤巢,會push到與這個分支相關(guān)聯(lián)的遠(yuǎn)程倉庫分支搞莺。這里dev分支與origin/dev關(guān)聯(lián),因此push到GitHub上的dev分支掂咒。
六才沧、請求合并到團(tuán)隊(duì)項(xiàng)目上
首先到你的GitHub上,進(jìn)入你Fork的倉庫里绍刮。點(diǎn)擊紅框處的Pull request
下圖左邊紅框糜工,表示要合并到fzu2015/CourseManagement項(xiàng)目的dev分支。
下圖右邊紅框录淡,表示要從自己倉庫的dev分支發(fā)起合并請求捌木。
點(diǎn)擊紅框處的 Create pull request就可以發(fā)送合并請求了。
當(dāng)然嫉戚,在發(fā)送請求之前刨裆,你可以檢查一下你都改了哪些東西。在上面那個頁面往下拉彬檀,就可以看到兩者的對比帆啃。如下圖
以上操作結(jié)束后,團(tuán)隊(duì)成員的流程就結(jié)束了窍帝。最后一步交給團(tuán)隊(duì)項(xiàng)目負(fù)責(zé)人來完成努潘。
七、團(tuán)隊(duì)項(xiàng)目負(fù)責(zé)人審核及同意合并請求
首先進(jìn)入GitHub的團(tuán)隊(duì)項(xiàng)目倉庫中。此時右邊的Pull requests顯示當(dāng)前項(xiàng)目有幾個Pull request疯坤。點(diǎn)擊進(jìn)入查看报慕。
選擇一個Pull request
項(xiàng)目負(fù)責(zé)人審核有兩個要注意的地方:
一個是下圖的①。一定要看清楚是合并到哪個分支压怠。這里是從schaepher的dev分支合并到fzu2015的dev分支眠冈。
另一個是下圖的②。點(diǎn)擊進(jìn)去后菌瘫,就可以查看該P(yáng)ull request對項(xiàng)目做了哪些修改蜗顽。這樣如果有問題,可以及時發(fā)現(xiàn)雨让,并關(guān)閉該P(yáng)ull request雇盖。
如果關(guān)閉了,一定要告訴隊(duì)友栖忠,否則他可能會不知道刊懈。雖然也可以直接在下面發(fā)布Comment告訴他,但隊(duì)友不一定看到娃闲。
- 如果沒有問題虚汛,可以點(diǎn)擊Merge pull request。這樣就合并好了皇帮。