火車可以上下車,但軌道不能亂。Master 也一樣——任何人的程式碼都要透過正確的入口才能上車。
沒有月台,沒有驗票,任何人在任何地方都可以直接跳上 master。這列火車遲早會出軌。
↑ 所有人直推 master,壞的 commit 混在裡面,找不到也很難移除
現實中的火車,乘客要在月台等候、驗票、確認安全才能上車。 程式碼也一樣——PR 就是那個月台,讓每一段程式碼在進入 master 之前都經過確認。
Master 是主軌道,永遠往前跑。每一站(版本)都是一個穩定的里程碑,中間不能有人亂插隊。
不能直推 master。所有程式碼必須先開 PR,走過月台才能上車。用 Branch Protection 強制執行。
PR 至少要一個人 Approve 才能 merge。不是不信任,是讓每段程式碼都有人確認過。
每個 PR 是完整的單位。有問題直接 revert 那個 PR,不影響其他人的東西,乾淨俐落。
Master 不是唯一的軌道。Git Flow 讓每種工作都有對應的 branch,各走各的,最後才匯入 master。
GitHub Settings → Branches → 鎖定 master,強制只能 PR merge
.github/pull_request_template.md 讓開 PR 有格式可依循
每個功能開一條 feature branch,完成再開 PR,永遠不直推