前十四天我們快速看過了Vue的語法以及一些基本概念,今天我們要跳一下來看何謂版本控制與git flow。
我們在開發專案時,常常會需要與別人共同合作,這時候,版本控制就很重要了,因為總不能你要把你改的程式碼交給別人時,打包成一個zip檔,這樣不僅浪費空間,而且別人也不知道你到底改了甚麼。
在版本控制的世界中,有兩大巨頭,第一個是git,其次是svn,在這裡,Grant選擇使用Git作為我們進行版控的工具,相關的git用法,這裡就不再多做贅述囉。
目前的版控系統大多以git為主,例如GitHub、Bitbucket、GitLab等等,這裡我選擇使用Github作為我們儲存程式碼的地方。
除此之外,我們在開發的流程上,最好是導入git flow,因為這將有助於我們維持開發的獨立、簡潔性,而甚麼是git flow呢?
讓我們來看以下這張圖:
在github的repository中,可以被分為許多的branch,這些branch看似獨立,卻又息息相關。
根據 Git Flow 的建議,主要的分支有 master、develop、hotfix、release 以及 feature 這五種分支,a每種分支負責不同的功能。其中 Master 以及 Develop 這兩個分支又被稱做長期分支,因為他們會一直存活在整個 Git Flow 裡,相當重要,而其它的分支大多會因任務結束而被刪除。
接著我們來看看每種分支的功能與特性:
master代表的是整個專案或產品的主線,主要是用來放穩定、隨時可上線的版本(Production Version)。因此,這個分支的來源只能從別的分支合併過來,開發者不會直接 Commit 到這個分支。由於是穩定版本,所以當我們完成了一個版本的釋出,通常也會在這個分支上的 Commit 上打上版本號標籤。
develop這個分支主要是所有開發的基礎分支,當要新增功能(Feature)的時候,所有的 Feature 分支都是從這個分支切出去的,Feature 分支的功能完成後,也都會合併回來這個分支,開發分支存放的是相對穩定,經過開發者測試後沒問題,但還需要一些時間多做測試的程式碼。
當Production版本的線上產品發生緊急問題的時候,這時候我們會從 Master 分支開一個 Hotfix 分支出來進行修復,意即告訴每個開發者,Production發生問題了!
Hotfix 分支修復完成之後,就會合併回 Master 分支,這時候再將Master的程式碼merge back回去 Develop 分支。
在這裡大家一定有個疑問,那為什麼一開始不從 Develop 分支切出來修?因為 Develop 分支的功能可能尚在開發中,有些功能或許不是那麼穩定,這時候如果硬是要從這裡切出去,只會對線上產品造成更大的災難喔。
當認為 Develop 分支夠成熟了,我們就可以把 Develop 分支合併到 Release 分支,在這邊進行算是上線前的最後測試,通常產品會有不同的環境,Test、Beta、Prod等等,而Release版本的程式碼我們就會將其釋出至Test或Beta版本的環境供user測試。
測試完成後,為了讓程式碼進行同步,Release 分支將會會合併到 Develop 分支中,再將develop merge進master裡。
當要開始新增功能的時候,就是使用 Feature 分支的時候了。Feature 分支都是從 Develop 分支來的,完成之後會再併回 Develop 分支。
Git flow在軟體工程中,Grant個人覺得滿重要的,因為簡潔的版本控制可以提升合作的效率,間接也能提升工程師們的產能。
Hi, I am Grant.
個人部落格 - https://grantliblog.wordpress.com/
個人網站 - https://grantli-website.netlify.app/#/mainpage
我的寫作專題 - https://vocus.cc/user/5af2e9b5fd89780001822db4#