序言
Git不僅僅是個版本控制系統,它也是個內容管理系統(CMS)逆济,工作管理系統等酌予。如果你是一個具有使用SVN背景的人,你需要做一定的思想轉換奖慌,來適應GIT提供的一些概念和特征抛虫。Git工作流有各式各樣的用法,但也正因此使得在實際工作中如何上手使用變得很頭大简僧。這篇指南通過總覽最常用的幾種Git工作流讓大家可以學習借鑒建椰。在閱讀的過程中請記住,工作流是作為方案指導而不是條例規(guī)定岛马。在展示了各種工作流可能的用法后棉姐,你可以從不同的工作流中挑選或揉合出一個滿足你自己需求的工作流屠列。
集中式工作流
如果你的開發(fā)團隊成員已經很熟悉Subversion,集中式工作流讓你無需去適應一個全新流程就可以體驗Git帶來的收益伞矩。這個工作流也可以作為向更Git風格工作流遷移的友好過渡笛洛。
功能分支工作流
功能分支工作流以集中式工作流為基礎,不同的是為各個新功能分配一個專門的分支來開發(fā)乃坤。一旦你玩轉了集中式工作流苛让,在開發(fā)過程中可以很簡單地加上功能分支,用來鼓勵開發(fā)者之間協作和簡化交流湿诊。這樣可以在把新功能集成到正式項目前狱杰,用Pull Requests的方式討論變更。
功能分支工作流背后的核心思路是所有的功能開發(fā)應該在一個專門的分支厅须,而不是在master分支上仿畸。這個隔離可以方便多個開發(fā)者在各自的功能上開發(fā)而不會弄亂主干代碼。另外朗和,也保證了master分支的代碼一定不會是有問題的错沽,極大有利于集成環(huán)境。
功能開發(fā)隔離也讓pull requests工作流成功可能眶拉,pull requests工作流能為每個分支發(fā)起一個討論甥捺,在分支合入正式項目之前,給其它開發(fā)者有表示贊同的機會镀层。另外,如果你在功能開發(fā)中有問題卡住了皿曲,可以開一個pull requests來向同學們征求建議唱逢。這些做法的重點就是,pull requests讓團隊成員之間互相評論工作變成非常方便屋休!
Pull Request工作流
Pull Requests是gitlab上方便開發(fā)者之間協作的功能坞古。提供了一個用戶友好的Web界面,在集成提交的變更到正式項目前可以對變更進行討論劫樟。
開發(fā)者向團隊成員通知功能開發(fā)已經完成痪枫,Pull Requests是最簡單的用法。開發(fā)者完成功能開發(fā)后叠艳,通過gitlab賬號發(fā)起一個Pull Request奶陈。這樣讓涉及這個功能的所有人知道,要去做Code Review附较,bug fixed和合并到master分支吃粒。但是,Pull Request遠不止一個簡單的通知拒课,而是為討論提交的功能的一個專門論壇徐勃。如果變更有任何問題事示,團隊成員反饋在Pull Request中,甚至push新的提交微調功能僻肖。所有的這些活動都直接跟蹤在Pull Request中肖爵。
Gitflow工作流
Gitflow工作流通過為功能開發(fā)、發(fā)布準備和維護分配獨立的分支臀脏,讓發(fā)布迭代過程更流暢劝堪。嚴格的分支模型也為大型項目提供了一些非常必要的結構。
Gitflow工作流定義了一個圍繞項目發(fā)布的嚴格分支模型谁榜。雖然比功能分支工作流復雜幾分幅聘,但提供了用于一個健壯的用于管理大型項目的框架,窃植,尤其適合敏捷開發(fā)管理模式帝蒿。
Gitflow工作流沒有用超出功能分支工作流的概念和命令,而是為不同的分支分配一個很明確的角色巷怜,并定義分支之間如何和什么時候進行交互葛超。除了使用功能分支,在做準備延塑、維護和記錄發(fā)布也使用各自的分支绣张。當然你可以用上功能分支工作流所有的好處:Pull Requests、隔離實驗性開發(fā)和更高效的協作关带。
Forking工作流
Forking工作流是分布式工作流侥涵,充分利用了Git在分支和克隆上的優(yōu)勢∷纬可以安全可靠地管理大團隊的開發(fā)者(developer)芜飘,并能接受不信任貢獻者(contributor)的提交。
Forking工作流和前面討論的幾種工作流有根本的不同磨总。這種工作流不是使用單個服務端倉庫作為『中央』代碼基線嗦明,而讓各個開發(fā)者都有一個服務端倉庫。這意味著各個代碼貢獻者有2個Git倉庫而不是1個:一個本地私有的蚪燕,另一個服務端公開的娶牌。Forking工作流的一個主要優(yōu)勢是,貢獻的代碼可以被集成馆纳,而不需要所有人都能push代碼到僅有的中央倉庫中诗良。開發(fā)者push到自己的服務端倉庫,而只有項目維護者才能push到正式倉庫鲁驶。這樣項目維護者可以接受任何開發(fā)者的提交累榜,但無需給他正式代碼庫的寫權限。效果就是一個分布式的工作流,能為大型壹罚、自發(fā)性的團隊(包括了不受信的第三方)提供靈活的方式來安全的協作葛作。也讓這個工作流成為開源項目的理想工作流。
參考文獻:
1猖凛、Git工作流指南
2赂蠢、Comparing Workflows