前言
GitHub團(tuán)隊(duì)開發(fā),多人協(xié)作開發(fā)必不可少,還沒有學(xué)過遠(yuǎn)程倉庫和本地倉庫概念請先了解一下,當(dāng)然因?yàn)镚itHub的私用服務(wù)器是需要租金的,故可能有的公司使用的是GitLab.
流程分析
例如現(xiàn)在公司有一個項(xiàng)目,我們暫且叫他做:GitHubTest.那么這個項(xiàng)目不可能只由一個人來開發(fā),肯定需要團(tuán)隊(duì)的協(xié)作配合。
假設(shè)參與這個項(xiàng)目的人有你,老大,和另外一個同事,你們分別負(fù)責(zé)一個模塊,共三個模塊。
開發(fā)前遠(yuǎn)程
這個時候老大會首先在自己本地創(chuàng)建一個項(xiàng)目,然后Push到遠(yuǎn)程Github服務(wù)器成為一個獨(dú)立的主分支,即遠(yuǎn)程的master分支,這個master分支是為了之后保存整個項(xiàng)目全部開發(fā)完成之后的成熟代碼(或者叫上線代碼),故開發(fā)不會使用master分支上。而是在老大本地新創(chuàng)建一個dev開發(fā)分支Push到遠(yuǎn)程服務(wù)器,這樣的話,遠(yuǎn)程服務(wù)器就擁有了兩個分支,一個用來存放最終版本代碼的master分支,和開發(fā)使用的dev分支。
開發(fā)前本地
當(dāng)每次開發(fā)的時候,你和同事會從dev遠(yuǎn)程開發(fā)分支check一份到本地即新創(chuàng)建一個與遠(yuǎn)程開發(fā)分支關(guān)聯(lián)的分支我們叫做dev_local分支(該本地分支是直接從遠(yuǎn)程分支dev上拉取下來的,故代碼相同),這個分支由于是和遠(yuǎn)程倉庫關(guān)聯(lián)起來的,故如果你進(jìn)行push會直接提交到遠(yuǎn)程倉庫,所以我們在正式開發(fā)的時候,會使用拉取dev之后得到的本地分支dev_local再創(chuàng)建一個本地分支local_fix用來開發(fā),local_fix本地分支因?yàn)槭怯闪硗庖粋€本地分支dev_local創(chuàng)建的所以不能Push到遠(yuǎn)程服務(wù)器,只能進(jìn)行Commit(當(dāng)然直接提交也是可以的,不過會在遠(yuǎn)程新創(chuàng)建一個local_fix分支,故不推薦),所以程序的開發(fā)就可以放心的在local_fix上面進(jìn)行開發(fā)。
開發(fā)后本地
當(dāng)完成了一天的工作之后將代碼Commit到local_fix分支本地倉庫保存,當(dāng)你負(fù)責(zé)的那個模塊代碼都已經(jīng)完成之后,這個時候就涉及到合并,先切換到dev_local分支之后,再將local_fix分支的代碼與dev_local進(jìn)行merge合并,這樣的話可以保證local_fix中的內(nèi)容全部合并入dev_local中,進(jìn)而又因?yàn)閐ev_local是直接從遠(yuǎn)程分支克隆下來的,故可以直接Push到遠(yuǎn)程服務(wù)器,但是在Push到遠(yuǎn)程服務(wù)器之前需要pull拉取一次最新代碼,以防團(tuán)隊(duì)其他開發(fā)人員已經(jīng)push了自己負(fù)責(zé)的那個模塊的代碼,以保證push時是遠(yuǎn)程分支最新的代碼。
開發(fā)后本地
每當(dāng)代碼有一些新的功能加入或者開發(fā)人員提交了代碼,修復(fù)了bug,都需要將遠(yuǎn)程的dev分支合并到master分支上,以便日后上線。
結(jié)尾
因?yàn)楸救耸窃谛4髮W(xué)生,4月份剛剛出來實(shí)習(xí),也是才接觸Git團(tuán)隊(duì)協(xié)作開發(fā),全部都是自己的理解,如果有不對的地方還希望指正。補(bǔ)充對這個講解特別好的老師的Git開發(fā)模式介紹:Git工作流程