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
release
branch - Always merge
release
intomain
anddevelop
- 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