Gitflow
1. Introduction
This guide describes the Release Management process in a project using the Gitflow workflow. It enables structured, stable, and predictable delivery of software versions.
2. Gitflow Branches
| Branch | Role |
|---|---|
main |
Stable production-ready version |
develop |
Integration of ongoing development |
feature/* |
Isolated development of new features |
release/* |
Final preparation before going to production |
hotfix/* |
Urgent bug fixes for production |
3. Release Process
3.1 Create the release Branch
When develop is stable and ready:
3.2 Stabilization Phase
Perform on the release branch:
- Minor bug fixes
- QA/UAT testing
- Version bump
- Minor adjustments (docs, configs...)
3.3 Deliver to main
3.4 Reintegrate into develop
4. Hotfix Management
If a bug is found in production:
git checkout main
git checkout -b hotfix/1.0.1
# Fix the bug
git commit -am "Fix: critical bug"
git checkout main
git merge hotfix/1.0.1
git tag -a v1.0.1 -m "Hotfix 1.0.1"
git checkout develop
git merge hotfix/1.0.1
git branch -d hotfix/1.0.1
5. Roles and Responsibilities
| Role | Main Responsibilities |
|---|---|
| Developers | Feature development, bug fixes |
| Release Manager | Release planning and orchestration |
| QA / Testers | Quality validation |
| DevOps / Ops | Deployment to staging/production |
| Product Owner | Functional approval |
6. Best Practices
- Do not develop new features on a
releasebranch - Always merge
releaseintomainanddevelop - Use Git tags for published versions
- Maintain a clear changelog
- Use explicit branch naming (
release/1.2.0,hotfix/1.2.1, etc.)
7. Release Tracker
| Version | Release Date | Status | Notes |
|---|---|---|---|
| v1.0.0 | 2024-06-01 | Released | Initial stable version |
| v1.0.1 | 2024-06-10 | Hotfix | Critical bug fix |
| v1.1.0 | TBD | In Progress | New features planned |
8. Diagram
gitGraph
commit
branch develop
checkout develop
commit id: "Feature A"
branch featureA
checkout featureA
commit id: "Work on Feature A"
checkout develop
merge featureA
commit id: "Prepare for release"
branch release1.0.0
checkout release1.0.0
commit id: "Final fixes"
checkout main
merge release1.0.0 tag: "v1.0.0"
checkout develop
merge release1.0.0