# 5.Git Workflow & Pull Request

### 5.1. Mục tiêu chương

<div id="bkmrk-">  
</div>Chương này quy định chuẩn commit và quy trình merge code nhằm:

- Đảm bảo lịch sử thay đổi rõ ràng, dễ truy vết
- Giảm xung đột giữa các nhóm phát triển
- Đảm bảo chất lượng code trước khi đưa vào nhánh chính
- Chuẩn hóa quy trình phát triển giữa Core Team và Partner

### 5.2. Khái niệm / phạm vi áp dụng

<div id="bkmrk--1">  
</div>Quy định này áp dụng cho:

- Tất cả repository của dự án
- Core Team và Partner Team
- Mọi commit và Pull Request (PR)

Quy trình phát triển tuân theo:

- Chuẩn format commit
- Chiến lược branch

**Điều kiện merge bắt buộc**

### 5.3. Quy định chính

#### 5.3.1. Format commit

Tất cả commit phải theo format:

&lt;type&gt;: &lt;description&gt;

Trong đó:

- &lt;type&gt;: loại thay đổi
- &lt;description&gt;: mô tả ngắn gọn nội dung thay đổi

#### Ví dụ commit hợp lệ

feat: add planning API

fix: validate file upload

refactor: optimize planning service

docs: update API guideline

test: add unit test for planning service

chore: update dependency versions

---

<span style="color: rgb(34, 34, 34); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 1.666em; font-weight: 400;">Type hợp lệ</span>

<div align="left" dir="ltr" id="bkmrk-type-%C3%9D-ngh%C4%A9a-feat-th"><table><colgroup><col width="65"></col><col width="256"></col></colgroup><tbody><tr><td>Type

</td><td>Ý nghĩa

</td></tr><tr><td>feat

</td><td>Thêm chức năng mới

</td></tr><tr><td>fix

</td><td>Sửa lỗi

</td></tr><tr><td>refactor

</td><td>Tối ưu, không đổi logic

</td></tr><tr><td>docs

</td><td>Cập nhật tài liệu

</td></tr><tr><td>test

</td><td>Thêm hoặc sửa test

</td></tr><tr><td>chore

</td><td>Thay đổi cấu hình, build, dependency

</td></tr></tbody></table>

</div>---

#### 5.3.2. Branch strategy

Hệ thống sử dụng mô hình branch chuẩn:

<div align="left" dir="ltr" id="bkmrk-branch-m%E1%BB%A5c-%C4%91%C3%ADch-main"><table><colgroup><col width="72"></col><col width="244"></col></colgroup><tbody><tr><td>Branch

</td><td>Mục đích

</td></tr><tr><td>main

</td><td>Bản stable, dùng cho production

</td></tr><tr><td>develop

</td><td>Bản tích hợp, nơi merge các feature

</td></tr><tr><td>feature/\*

</td><td>Phát triển chức năng mới

</td></tr><tr><td>fix/\*

</td><td>Sửa lỗi

</td></tr></tbody></table>

</div>---

#### Quy tắc làm việc với branch

- Không commit trực tiếp vào main
- Không commit trực tiếp vào develop
- Mọi thay đổi phải qua Pull Request
- Branch phải được đặt tên đúng quy tắc

---

<span style="color: rgb(34, 34, 34); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 1.666em; font-weight: 400;">Ví dụ tên branch hợp lệ</span>

feature/planning-create-api

feature/document-upload

fix/login-null-pointer

fix/planning-date-validation

---

<span style="color: rgb(34, 34, 34); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 2.333em; font-weight: 400;">5.3.3. Điều kiện merge Pull Request</span>

Pull Request chỉ được merge khi đáp ứng đầy đủ các điều kiện:

1. Build thành công

Không sửa:  
  
common/\*\*

config/\*\*

2. Không sửa shared entity

**Có review từ Core Team**

### 5.4. Cách thực hiện / quy trình

<div id="bkmrk--12">  
</div>#### Quy trình phát triển tính năng

Bước 1: Tạo branch từ develop

git checkout develop

git pull

git checkout -b feature/planning-create-api

Bước 2: Thực hiện commit theo chuẩn

git commit -m "feat: add planning create API"

Bước 3: Push branch lên remote

git push origin feature/planning-create-api

Bước 4: Tạo Pull Request vào develop

Bước 5: Core Team review

Bước 6: Nếu đạt yêu cầu → merge vào develop

---

#### Quy trình sửa lỗi

Bước 1: Tạo branch fix

git checkout develop

git checkout -b fix/planning-null-error

Bước 2: Commit

git commit -m "fix: handle null planning name"

Bước 3: Tạo PR và chờ review

### 5.5. Ví dụ minh họa

#### Trường hợp commit sai

![](https://docs.lifetex.vn/uploads/images/gallery/2026-02/scaled-1680-/embedded-image-slvhkcbl-png.png)

Sai vì:

- Không theo format chuẩn
- Không có type

---

<span style="color: rgb(34, 34, 34); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 1.666em; font-weight: 400;">Trường hợp commit đúng</span>

fix: handle null planning name

![](https://docs.lifetex.vn/uploads/images/gallery/2026-02/scaled-1680-/embedded-image-xikz8bws-png.png)

---

#### Trường hợp merge sai

Partner:

- Commit trực tiếp vào develop
- Không tạo PR
- Không có review

→ Vi phạm quy trình.

---

#### Trường hợp merge đúng

1. Tạo branch feature/planning-api
2. Commit theo chuẩn
3. Tạo PR vào develop
4. Core Team review
5. Build pass
6. Merge

**![](https://docs.lifetex.vn/uploads/images/gallery/2026-02/scaled-1680-/embedded-image-g3tqv2lw-png.png)**

### 5.6. Checklist áp dụng

<div id="bkmrk--37">  
</div>Trước khi tạo Pull Request:

- Commit đúng format &lt;type&gt;: &lt;description&gt;
- Branch đúng quy tắc feature/\* hoặc fix/\*
- Không commit trực tiếp vào main hoặc develop
- Build thành công
- Không sửa:
- common/\*\*
- config/\*\*
- shared entity

- PR đã được Core Team review