柚子快報邀請碼778899分享:Git 工作流的一些經(jīng)驗分享
Gitflow工作流 Forking工作流
下面針對性說下每個工作流可能使用到的場景和適用性:
集中式工作流
集中式工作流 | center
這種工作方式跟svn類似,它只有一個master分支,開發(fā)者會先把遠(yuǎn)程的倉庫克隆到本地,之后的修改和提交都在本地操作,直到在某個合適的時間點(diǎn)將本地的代碼合入到遠(yuǎn)程master。這種工作流比較適合小團(tuán)隊,因為小團(tuán)隊可能不會太多的協(xié)作和合流的動作。
功能開發(fā)工作流
這種工作流關(guān)注功能開發(fā),不直接往master提交代碼保證它是穩(wěn)定并且干凈的,而是從master拉取feature分支進(jìn)行功能開發(fā),團(tuán)隊成員根據(jù)分工拉取不同的功能分支來進(jìn)行不同的功能開發(fā),這樣就可以完全隔離開每個人的工作。當(dāng)功能開發(fā)完成后,會向master分支發(fā)起Pull Request,只有審核通過的代碼才真正允許合入master,這樣就加強(qiáng)了團(tuán)隊成員之間的代碼交流,也就是我們常說的Code Review。
Gitflow工作流
這個工作流其實也是我們團(tuán)隊采用的工作流,這也是很多團(tuán)隊會采用的工作流,它會相對復(fù)雜一點(diǎn),但它非常適合用來管理大型項目的發(fā)布和維護(hù),后面筆者也會詳細(xì)講下這一塊。貫穿整個開發(fā)周期,master和develop分支是一直存在的,master分支可以被視為穩(wěn)定的分支,而develop分支是相對穩(wěn)定的分支,特性開發(fā)會在feature分支上進(jìn)行,發(fā)布會在release分支上進(jìn)行,而bug修復(fù)則會在hotfix分支上進(jìn)行。筆者也是花了不少時間才熟練掌握整個工作流,期間遇到不少坑,后面會跟大家分享下。
Forking工作流
Forking工作流對于開源項目貢獻(xiàn)者一定不陌生了,它有一個公開的中央倉庫,其他貢獻(xiàn)者可以Fork(克?。┻@個倉庫作為你自己的私有倉庫,開源項目維護(hù)者可以直接往中央倉庫push代碼,而代碼貢獻(xiàn)者只能將代碼push到自己的私有倉庫,只有項目維護(hù)者接受代碼貢獻(xiàn)者往中央倉庫發(fā)起的pull request才會真正合入。
小結(jié)一下
上面已經(jīng)大致講了在git當(dāng)中的四種比較常見的工作流,都是需要開發(fā)者去實踐理解的。
關(guān)于git工作流,只有選用最合適自己團(tuán)隊的工作流才能有效的提高開發(fā)效率,上面提到的一些工作流模式都有各自的適用場景,如何選用適合自己團(tuán)隊的工作流得結(jié)合團(tuán)隊成員的實際情況,看團(tuán)隊成員對于工作流的理解程度,還有對于工作流的執(zhí)行程度。
我們團(tuán)隊的一些實踐
=========
現(xiàn)在講下我們團(tuán)隊針對Gitflow的一些實踐:
master分支
主分支 保持穩(wěn)定 不允許直接往這個分支提交代碼,只允許往這個分支發(fā)起merge request 只允許release分支和hotfix分支進(jìn)行合流
develop分支
開發(fā)分支 相對穩(wěn)定的分支 用于日常開發(fā),包括代碼優(yōu)化、功能性開發(fā)
feature分支
特性分支 從develop分支拉取,用于下個迭代版本的功能特性開發(fā) 功能開發(fā)完畢合并到develop分支
release分支
發(fā)布分支 從develop分支拉取 用于回歸測試,bug修復(fù) 發(fā)布完成后打tag并合入master和develop
hotfix分支
熱更新分支 從develop分支拉取 用于緊急修復(fù)上線版本的問題 修復(fù)后打tag并合入master和develop
大家可能會發(fā)現(xiàn)我們這個跟標(biāo)準(zhǔn)的Gitflow工作流有些差別,其實也沒有什么標(biāo)準(zhǔn)不標(biāo)準(zhǔn)的,前面說到要結(jié)合團(tuán)隊的實際情況,我們團(tuán)隊對于目前所采用的工作方式都是達(dá)成共識的,所以有一些差異并沒有關(guān)系。
說了這么久,還沒有一句git命令,那就讓大家感受一下吧(感謝Bugly小色熊整理):
1). 首先將遠(yuǎn)程代碼拉取到本地
git clone xxx
git checkout -b develop origin/develop
2).新建feature分支
git checkout -b feature
3).多人在feature上開發(fā),如果中途需要將develop的變更合入feature,所有人需要將本地的代碼變更提交到遠(yuǎn)程
git fetch origin
git rebase origin/feature
git push origin feature
然后由feature負(fù)責(zé)人rebase develop分支,刪除原來feature分支,重新新建feature分支;
git fetch origin
git rebase origin/feature
git rebase develop
git push origin :feature
git push origin feature
這樣可以保證feature保持線性變更;
4).feature開發(fā)完成后,所有人需要將本地的代碼變更提交到遠(yuǎn)程
git fetch origin
git rebase origin/feature
git push origin feature
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)初中級Android工程師,想要提升技能,往往是自己摸索成長或者是報班學(xué)習(xí),但對于培訓(xùn)機(jī)構(gòu)動則近萬的學(xué)費(fèi),著實壓力不小。自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Android移動開發(fā)全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Android開發(fā)知識點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來,每個節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且會持續(xù)更新!
如果你覺得這些內(nèi)容對你有幫助,可以掃碼獲?。。。▊渥ⅲ篈ndroid)
推薦學(xué)習(xí)資料
腦圖
《互聯(lián)網(wǎng)大廠面試真題解析、進(jìn)階開發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實戰(zhàn)項目源碼講義》點(diǎn)擊傳送門即可獲??!
學(xué)習(xí)資料
腦圖 [外鏈圖片轉(zhuǎn)存中…(img-SfTYtTht-1713366750770)] [外鏈圖片轉(zhuǎn)存中…(img-9uo05zbr-1713366750771)] [外鏈圖片轉(zhuǎn)存中…(img-3zx1tPCi-1713366750772)]
《互聯(lián)網(wǎng)大廠面試真題解析、進(jìn)階開發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實戰(zhàn)項目源碼講義》點(diǎn)擊傳送門即可獲取!
柚子快報邀請碼778899分享:Git 工作流的一些經(jīng)驗分享
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。