Skip to content

Git Workflow Guidelines

We follow a structured branching and release model to maintain the integrity of our main and develop branches. This ensures a stable production environment while allowing for continuous integration of new features.


🧩 Feature Development

All new features and bug fixes should be developed on dedicated branches extending from develop.

1. Create a Feature Branch

Always branch off the latest code.

git checkout -b feat/xyz

2. Work & Commit

Make your changes. We strictly use Conventional Commits and require a representative emoji at the start of the message.

git add .
git commit -m "✨ feat: add descriptive message"

3. Push to Remote

Push your feature branch to the repository. If working with others, this is when you would open a Pull Request.

git push origin feat/xyz

4. Merge to Develop

Once the feature is complete and verified, merge it back into the develop branch using a non-fast-forward merge (--no-ff) to preserve the feature's commit history.

git checkout develop
git pull origin develop
git merge --no-ff feat/xyz -m "✨ merge: sync xyz → develop"
git push origin develop
git branch -d feat/xyz


🚀 Production Release

Releases are formalized by merging aggregated features from develop into the main branch.

1. Ensure develop is Latest

git checkout develop
git pull origin develop

2. Merge develop → main

Merge the code into the production branch, again preserving the merge commit.

git checkout main
git pull origin main
git merge --no-ff develop -m "🚀 release: sync develop → main"
git push origin main

3. Run Release Script

Use our automated release scripts to formally bump the semantic version, manage to pyproject.toml, and generate the release tags.

This step will automatically trigger the GitHub Actions PyPI publishing pipeline once the tag is pushed.

# Options: patch, minor, major
./scripts/release.sh minor