20
Wen Liao A successful Git branching model 導讀 高雄,旗山

A successful git branching model 導讀

Embed Size (px)

Citation preview

Page 1: A successful git branching model 導讀

Wen Liao

A successful Git branching model 導讀

高雄,旗山

Page 2: A successful git branching model 導讀

Disclaimer

投影片資料為作者整理資料及個人意見,沒有經過嚴謹確認,請讀者自行斟酌

Page 3: A successful git branching model 導讀

目標

導讀 A successful Git branching model的軟體Release方式

URL:http://nvie.com/posts/a-successful-git-branching-model/

Page 4: A successful git branching model 導讀

背景知識 Fast Forward Merge

簡稱FF

Page 5: A successful git branching model 導讀

背景知識 Fast Forward Merge in GIT: Before

branch

Master

Branch Head

MasterHead

Page 6: A successful git branching model 導讀

背景知識 Fast Forward Merge GIT: After

branch

Master

Branch Head

MasterHead

Page 7: A successful git branching model 導讀

背景知識 非Fast Forward Merge in GIT: Before

branch

Master

Branch Head

MasterHead

Page 8: A successful git branching model 導讀

背景知識 非Fast Forward Merge GIT: After

branch

Master

Branch Head

MasterHead

merge

Page 9: A successful git branching model 導讀

為什麼要提FF?

● 可以保留branch更動的footprint

Page 10: A successful git branching model 導讀

branch

Master

Branch Head

MasterHead

branch Master

Branch Head

MasterHead

mergeVS那一個比較清楚地顯示軟體branch的關聯

性?

Page 11: A successful git branching model 導讀

作者的Branches 分類

● Main branches○ Master○ Develop

● Supporting branches○ Feature○ Release○ Hotfix

Page 12: A successful git branching model 導讀

Main Branches Develop Master

branch

mergewhenproduction release

mergewhenproduction release

AKA:integration

Master: 保證product ready 狀態

Develop: ● 隨時為下一次

Release準備● 放

○ Feature○ Fix○ Release更動

■ 版號■ 路徑■ ...

Tag: 版號

Tag: 版號

Page 13: A successful git branching model 導讀

Feature Branch

● 一定從develop branch出來● 寫完merge 回develop branch● 寫的不如預期可以宰掉● 一定要用NO FF● 可以定相關的branch name convention

Page 14: A successful git branching model 導讀

Feature Branch: USE NO FF merge

branch

Develop

Branch Head

DevelopHead

merge

Page 15: A successful git branching model 導讀

Release Branch

● 一定從develop branch出來● 用來處理Release相關事物

○ 改版號○ 改PATH○ ...

Page 16: A successful git branching model 導讀

Release Branch

● Branch出來,處理Release相關事物中,如果發現錯誤,要merge 回develop branch

● 確認無誤,可以出貨後○ merge回develop和master○ master tag release版號○ 可以宰掉release branch

● 一定要用NO FF● 可以定相關的branch name convention

Page 17: A successful git branching model 導讀

Release Branch: USE NO FF merge

branch

Develop

Release Head

DevelopHead

Bug fix

merge

merge

Master

MasterHead

Tag with version

Page 18: A successful git branching model 導讀

Hotfix Branch

● 一定從master branch出來● 用來處理Release後被客戶或是QA抓包的錯

誤● 可以順便進版表示該版本是Fix bug,如1.2晉

升到1.2.1● 修正完畢要merger回master,視情況merge回

develop○ 因為有可能develop已無此功能或是已修正

Page 19: A successful git branching model 導讀

Hotfix Branch

● 如果舊版正在進行hot fix,而新版release branch也正在進行中,請直接merge到release branch而不是develop branch

● 確認修正後,可以刪除該branch● 一定要用NO FF● 可以定相關的branch name convention

Page 20: A successful git branching model 導讀

Hotfix Branch: USE NO FF merge

branch

Develop

HotfixHead

DevelopHead

Bug fix

merge

merge

Master

MasterHead

進版Bug fix