*title: Git Branching Model
category: Git
time: 1731256917945
---

- **Master / Main**: locked, only for productions-ready code
- **Develop (dev) / staging**: latest delivered development changes for the next release
    - When stable and ready to be released, merge back into master and tagged with release number
    - Tags: add tag before merge into master (Usually in release branch)
- **Functioning branches / Supporting branches**:
    - **Feature**: Develop new feature for future release (may not in origin)
        - May branch off from: `develop`
        - Must merge back into: `develop`
        - Naming: `feature/*` ~~or just `feature_name`~~
    - **Release**: Preparation of a new production release
        - May branch off from: `develop`
        - Must merge back into: `develop` and `master`
        - Naming: `release/*`
        - Tags: Version tags include 3 digit version name with a v prefix
            1. Major version number
            2. New feature
            3. Bug fix
            4. Suffix:
                1. alpha
                2. beta
                3. RC (Release Candidate)
                4. (RTM, Release to Manufacturing)
                5. (RTW, Release to Web)
                6. GA (General Available)
                7. R for Release, or Gold (Production or live release)
    - Bug fix / Hotfix:
        - May branch off from: `master`
        - Must merge back into: `develop` and `master`
        - Naming: `bugfix/*` or `hotfix/*`
    - Refactoring:
        - May branch off from: `master`
        - Must merge back into: `develop`
        - Naming: `refact/*`
        - Special refactoring jobs, need more attention

***Reference:***
- [A successful Git branching model](https://nvie.com/posts/a-successful-git-branching-model/)
- [Onther Guides (Deprecated)](http://ivweb.io/topic/58ba702bdb35a9135d42f83d)
