Hai chiến lược nhánh (branching model) trái ngược về cách tích hợp:
- Trunk-based development: mọi người commit vào một nhánh chính (trunk/main), merge nhỏ và thường xuyên; nhánh feature sống rất ngắn (dưới một ngày) rồi merge ngay. Tính năng chưa xong được giấu sau feature flag thay vì để trong nhánh lâu. Hỗ trợ CI thật sự (integrate liên tục), giảm merge lớn.
- GitFlow: nhiều nhánh sống lâu —
develop,feature/,release/,hotfix/*. Cấu trúc rõ ràng nhưng tích hợp chậm, merge phức tạp và dễ conflict lớn vì nhánh lệch nhau lâu.
So sánh: trunk-based tối ưu tốc độ tích hợp và CI/CD, đổi lại cần kỷ luật (test tự động, feature flag). GitFlow hợp chu kỳ release có phiên bản rõ ràng nhưng ngược với tinh thần "integrate liên tục". DevOps hiện đại nghiêng về trunk-based.