2025 iThome鐵人賽
「 Flutter :30天打造念佛App,跨平台從Mobile到VR,讓極樂世界在眼前實現! 」
Day 2
「 Git Flow — 人生不能重來,但 Git 可以 」
Day 2 ,我們一起先來認識 Git 、Git Flow,
除了讓開發過程更順暢安心,也可以避免以下意外的措手不及。
小劇場1
你家的貓,突然打翻桌上的水,筆電壞了,寫了半個月的Code,沒了。
謎之音:騷年呀~你需要Git呀,記得Push到GitHub
小劇場2
A某:咦?啊啊啊…我的Code怎麼沒了
B某:…痾,不好意思,可能我動到了
謎之音:騷年~你們需要Git flow 呀
小劇場3
新功能上線,突然出大Bug。
謎之音:騷年~快開分支hotfix去修唄
Git 是一個 分散式版本控制系統(Distributed Version Control System),
能夠記錄專案中每個檔案的修改歷史,讓我們能查看或切回任一時間點的專案版本。
因此可以將Git想像成能夠穿梭不同時間線的「時光機」。
Git時光機的特點:
Git 會在我們的電腦本機建立儲存庫(Repository) 保存專案的所有版本歷史,
GitHub 和 GitLab 則是 Git 儲存庫的「雲端(遠端)託管平台」。
GitHub 和 GitLab 不僅能解決備份問題,同時也是完整的協作與開發平台,
支援多裝置同步與團隊協作,能開 Issue 追蹤任務、發 PR 審查程式碼,
並透過 CI/CD 自動測試與部署,讓專案從規劃到上線都有系統化流程。
一種軟體開發流程,依照開發目的將專案拆成不同的分支進行。
可以把 Git Flow理解為:
透過Git建立多條平行時間線,讓不同分支的時間線能各自專注不同任務,
最後再合併整合。
分支 | 用途 | 特點 |
---|---|---|
main | 永遠保持可上線的穩定版本 | 只有 release 或 hotfix 合併進來,並打上版本Tag |
develop | 整合所有開發完成的功能 | 下一個即將上線的版本,會進行測試與驗證 |
feature | 開發新功能時使用的分支 | 從 develop 切出,每個功能一條分支,完成後再合併回 develop |
release | 發版前的穩定化分支 | 進行最後 Bug 修正與版本號調整,完成後合併到 main 和 develop |
hotfix | 線上緊急修復 | 從 main 切出,修完直接合併回 main 和 develop,並重新發布版本 |
Git Flow 流程步驟
建立develop分支
先從 main 建立 develop 分支,develop 是日常開發的主線。
建立feature分支
從 develop 建立 feature 分支,團隊開發時每人會在不同的feature開發新功能,
完成後再合併回develop。
建立 release 分支
功能開發完成,從 develop 建立 release 分支,最後測試、修 Bug、更新版本號。
合併到 main 發版
release 測試完成後,合併回 main 並打 Tag,上線新版本,同步合併回 develop。
緊急修復
上線後發現重大問題,從 main 建立 hotfix 分支,修完合併回main和develop,並重新發佈版本。
重點 | 內容 |
---|---|
Git | 穿梭與建立不同開發時間線的時光機 |
GitHub / GitLab | 雲端(遠端)存放資料的協作開發平台 |
GitFlow | 將專案拆成不同任務分支的開發流程 |