Git Branch Model

Git Branch Model

Mở đầu

Tình cờ đọc được một bài về git flow khá dễ hiểu trên https://qiita.com với cách triển khai đi từ trải nghiệm của một beginner đến khi rút ra được một git flow có lợi nhất project . Bài này sẽ liệt kê một số case không tốt khi sử dụng git và sau cùng sẽ giới thiệu branch model để giải quyết những vấn đế đó. Hy vọng sẽ có ích cho các bạn khi mới bắt đầu áp dụng git flow

Case 1: một nhánh master

Lúc mới bắt đầu xài Git tôi đã dùng cách này

[work flow process] 1. Commit mọi thứ lên master

master:
Toàn bộ mọi thứ mà bạn phát triển sẽ được đẩy lên branch này

[Vấn đề] ・Việc gữ lại version ổn định sau thời điểm release là không thể,…

Case2:  master và develop branch

Từ case 1 tiến thêm nửa bước

[work flow process] 1. Lúc mới bắt đầu phát triển thì tách từ master ra để tạo branch develop
2. Trong lúc đang phát triển thì commit mọi thứ lên develop
3. Lúc release thì merge develop vào master

master: Branch để quản lý source code của thời điểm sau release

develop(tạo từ master): branch dùng để phát triển

[Vấn đề] ・Trường hợp phát sinh đổi requirement ở chức năng đã implement xong thì việc đối ứng khó khăn,…

Case3: master&develop&feature branch

[work flow process] 1. Tạo branch develop từ branch master
2. Từ branch develop, tạo branch feature với mỗi chức năng để implement
3. Chức năng mà đã implement xong trên branch feature thì sẽ merge vào branch develop
4. Thời điểm release thì merge develop vào master

master: branch quản lý source code ở thời điểm release

develop (tách ra từ master): Branch chính để phát triển

feature (tách ra từ develop): Branch để implement cho từng chức năng (feature/◯◯, feature/xx…)

[Vấn đề] ・Việc điều chỉnh lúc release thì phụ thuộc vào branch develop

・Không có branch cho trường hợp phát sinh bug nghiệm trọng sau khi release

Branch model để giải quyết các vấn đề trên

Tôi sẽ giới thiệu branch design mà có thể ứng dụng để giải quyết những vấn đề trên

[work flow process] 1. Tạo branch develop từ branch master
2. Tạo branch feature cho mỗi chứng năng cần implement từ branch develop
3. Chức năng đã hoàn thành trên branch feature sẽ merge vào develop
4. Ở thời điểm release sẽ tạo branch release từ develop
5. Ở thời điểm kết thúc release sẽ merge từ release vào develop và master

[flow đối ứng lỗi sau release] 1. Tạo branch hotfix từ branch master
2. Trên branch hotfix tại thời điểm đối ứng bug xong thì merge vào branch develop, master

master: Branch quản lý source code sau khi release

develop (Tạo từ master): Branch để phát triển chính

feature (tách từ develop): Branch cho mỗi chức năng cần implement (feature/◯◯, feature/xx,…)

release (tách từ develop): Branch để điều chỉnh nhỏ lúc release sau khi đã hoàn thành công việc phát triển trên develop

hotfix ( tách ra từ master ): Branch cho việc đối ứng gấp trường hợp có bug nghiêm trọng trên sản phảm đã release (bug crash chẳng hạn)

Tham Khảo

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

https://qiita.com/okuderap/items/0b57830d2f56d1d51692

Leave a Reply