> For the complete documentation index, see [llms.txt](https://developer.cscmobicorp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.cscmobicorp.com/quy-trinh-git.md).

# Quy trình Git

Mục tiêu có 1 quy trình sử dụng git chuẩn. Mỗi branch sẽ có ý nghĩa riêng

<figure><img src="https://2104621774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgeyYu23aXsOKQRAzehmS%2Fuploads%2FQ9vqLDlIYUpp2GcFls8K%2Fimage.png?alt=media&amp;token=9d342a1d-2bd8-4530-9154-550a7940a866" alt=""><figcaption></figcaption></figure>

## 1. Các Branch và ý nghĩa

* **Main (Master):** là nhánh sẽ tương ứng với bản game trên store.
  * Trường hợp nếu các platform khác nhau thì có thể đặt: **main-xxxx**&#x20;
  * Ví dụ: main-android, main-ios, main-webgl
* **dev:** là nhánh sẽ dùng để merge các tính năng và dùng để build ra bản test. Nhánh dev được base từ nhánh Main
* **dev-xxxx**: là nhánh dùng để dev các tính năng, nhánh này được base từ nhánh dev
* **fix-xxx:** là nhánh dùng để fix các lỗi từ nhánh **Main**, tương ứng với bản trên store. Nhánh này được base từ nhánh **Main**

## 2. Quy trình sử dụng

### 2.1 Khởi tạo các branch

Dùng lệnh sau để tạo 1 nhánh mới base từ nhánh gốc

```
git checkout -b <tên nhánh mới> [nhánh gốc]
```

* Nhánh Main được tạo ngay từ đầu project
* Nhánh dev được base từ nhánh Main
* Khi phát triển tính năng nào thì base từ nhánh dev
  * Ví dụ tính năng login thì tạo nhánh dev-login
* Khi bản trên store có lỗi và cần fix thì sẽ tạo nhánh fix-xxxx (trong đó xxxx là tên ngắn gọn mô tả fix cái gì). Nhánh này base trên nhánh Main
  * ví dụ tính năng login có lỗi và cần sửa thì tạo nhánh fix-login base từ nhánh main

### 2.2 Quy trình sử dụng

<figure><img src="https://2104621774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgeyYu23aXsOKQRAzehmS%2Fuploads%2FFJj8iye9qOhWzaKedNgL%2Fquy%20tr%C3%ACnh%20git.drawio%20(1).png?alt=media&amp;token=0b7f9b39-0056-4859-8f06-24bffbc2bbe7" alt=""><figcaption><p>Quy trình sử dụng Git</p></figcaption></figure>

* Các nhánh tính năng **dev-xxxx** phải luôn được pull từ nhánh **Main** để đảm bảo được update code mới nhất từ nhánh **Main**.
* Sau khi tính năng được làm xong thì thì merge nhánh **dev-xxxx** vào nhánh **dev** và đem build test sản phẩm
* Khi sản phẩm đã test thành công, thì merge nhánh từ nhánh **dev** vào nhánh **Main** và build sản phẩm để đưa lên store
* Nếu bản trên store, tương ứng với code mới nhất ở nhánh Main có lỗi, thì tạo nhánh **fix-xxxx** để sửa lỗi. Sau khi sửa xong thì merge vào nhánh **Main** để build sản phẩm và đưa lại lên store.
* Sau khi fix lỗi xong thì các nhánh **dev-xxxx** cần được merge từ nhánh **Main** để đảm bảo việc fix lỗi đã được đưa vào source code.
