GitFlow 流程說明及注意要點 === ###### tags: `版本控制`, `Git`, `version control` [TOC] *** ## 先說注意要點 * **feature branch不要太長壽,最多最多,不要超過一個sprint** * **萬一內容太多,就回頭跟 PM 商量,這個需求太大了,必須修剪** * **品質好的自動測試可以消除你對頻繁回主線的疑慮** * **進版前一定要開 release,此版本一定要與整測機(如果有)上的運行的保持同步** * **承上,改一行註解也必須做到!** * **hotfix跟release開啟的同時就要決定版號,這能幫你確認版本** * **經常存在的branch只有兩個:develop與master** ***  # feature branch 早上你泡好咖啡,從你的座位上坐下,決定好今天要為這個專案加上一個發email的新功能,於是這個時候你要做的事是『加新功能』。既然如此,你就應該創一個新的feature branch,並將其命名為『add_email_feature』。  上圖中的粉紅圈圈所在的支線就是你新創的branch。依照gitflow的規定,他會被加上一個feature的目錄名:feature/add_email_feature,不為什麼,只是為了方便辨識與管理而已。 接下來你就開始開發,開發與自動測試過程花了三天,結束後你就要結束這個branch,於是你merge回develop,一切又如一開始那樣祥和,世上只剩develop和master兩大branch。  左圖這樣同時有好幾的feature同時在開發的場景多了去了。但是gitflow告訴我們不用擔心,儘管開發自己的功能便是,但是你一定要注意一點,開發測試完自己的功能就一定要趕快merge回主線,並且結束這個branch。 *記住,無論何時,都要讓流浪在外的feature branch越少越好,branch生命週期越短越好。這件事情對幫助develop的穩定度有莫大的好處。* 你一定也遇過一種情形,功能還沒要上線,你不敢放到主線,於是只好放在feature branch上癡癡的等老闆點頭上線,你才敢merge。這種事很常見,但這不是允許一個長壽branch存在的理由。身為一個好的RD,你應該要有能力設下安全的toggle,並且同時能附上足夠完整的auto test讓你有信心這個toggle不容易被誤啟,更有信心QA有能力驗證這個toggle的開關,同時QA驗過的版本就肯定是拿去上線的版本才對。 所以,請記住:feature branch的長度不應過長。如果上述的因素你都能夠排除,feature branch還是很長壽,那麼只剩一個原因了:feature內容開過大。請回頭找你的 PM 商量,試著再多拆分成幾個獨立的小feature。 # Release 好不容易熬到要上線了,這個時候我們要做的第一件事,就是要來決定版號。怎麼決定版號並不在本文要討論的範圍內,總之他就是被決定了。接著就是要來開release branch了。  上圖中綠色的點,描述的正是release branch極短的一生。開啟release branch之後,就開始進入生產前的總驗測(部署到整測環境)。 若沒有整測環境,則把release branch當成是進入master前的緩衝,讓總驗測針對master進行,一旦發生問題就視同正式環境問題處理,也就是開hotfix。 有一件事一定要嚴格遵守: *一旦release開出來,就只能修bug,不能開新功能。 一旦release開出來,就只能修bug,不能開新功能。 一旦release開出來,就只能修bug,不能開新功能。* # Production 一旦產品在正式環境出了問題,唯一一條路就是解掉他了。這個時候hotfix就該出場了。  上圖的紅點就是hotfix,它從master開出來,結束時回到master,順便修復develop 我們對待hotfix就要像release一樣: * 開了branch的同時就要決定版號 * 只准修bug,不准偷渡新功能 驗測完畢,hotfix結束,產品上線,順便修復develop,世界又回到最原始的單純狀態,只剩下develop和master了 *** ## 參考連結 + [原文連結](https://medium.com/kuma%E8%80%81%E5%B8%AB%E7%9A%84%E8%BB%9F%E9%AB%94%E5%B7%A5%E7%A8%8B%E6%95%99%E5%AE%A4/%E5%9F%BA%E7%A4%8E-git-flow-%E5%B7%A5%E4%BD%9C%E6%B3%95-fa50b1dddc4f) + [觀念補充 - 從頭釐清基本觀念](https://www.ithome.com.tw/news/95283)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.