Git branching model mà mình theo đuổi
Flow này có gọi là mô hình xương rồng (cactus model), xu hướng rewrite history.
Các nhánh dev sẽ không bao giờ merge lại master, các commit sẽ được cherry-pick hoặc merge squash vào 1 nhánh master duy nhất.
Workflow example
I. Khi có chức năng mới
- Pull code mới nhất từ master về
- Leader checkout nhánh feature tổng từ master
II. Khi có task/bug mới
- Pull code mới nhất từ nhánh tổng
- Dev checkout nhánh task/bug từ nhánh feature tổng
- Coding trên nhánh task/bug, tạo pull request đến nhánh feature tổng
- Dev review chéo rồi approve, leader review, approve và merge squash vào nhánh tổng
III. Khi release
- Leader tạo pull request từ nhánh feature tổng đến master
- Leader merge squash PR vào master, rewrite commit message
IV. Khi nhánh feature bị outdate so với master
- Leader rebase master vào feature tổng, fix conflict nếu có
- Leader push -f để update nhánh feature tổng, thông báo với cả team
- Dev tự update lại nhánh task/bug của bản thân và gửi lại pull request
Chú ý:
- Không push trực tiếp code lên nhánh feature tổng
- Luôn sử dụng squash để dễ dàng review commit trong nhánh tổng và master
- Không để tồn tại merge commit trên nhánh feature/master