How To Manage GitHub Releases

This post will describe how to manage GitHub releases. This assumes that you have an online GitHub repo, a local repo for development. See this post on how to initially set this environment up. This workflow can be used generically for any project, but I am using Thonny on Windows to develop a python package which is published on PyPI so there are steps related to that.

Single Day Development Workflow

This “single day” workflow illustrates the entire process and assumes you will complete this in one day. Keep scrolling down for a description of the process taking place over multiple days (the more likely scenario).

Step # 1. Always start from the latest main (do this every day)

!git checkout main
!git pull origin main

Step # 2. Create a short, descriptive feature/bugfix branch

#    Examples:
!git checkout -b feature/wifi-support          # new feature
!git checkout -b fix/led-blink-race            # bug fix
!git checkout -b docs/update-readme            # documentation
!git checkout -b release/v0.2.0                # preparing a new release

Step # 3. Make your changes (edit files, test on Pico/Pi/Windows, etc.)

#    → Test everything works!

Step # 4. Stage & commit often (small, logical commits are best)

!git add .
!git commit -m "feat: add WiFi connection manager"
!git commit -m "fix: prevent LED double-blink on Pico W"
!git commit -m "docs: add Pico deployment instructions"

Step # 5. Push your branch to GitHub (creates it remotely)

!git push -u origin feature/wifi-support

→ Now open a Pull Request on GitHub:

Step # 6. Wait for review (or just merge yourself since you’re the owner)

#    → On GitHub → Pull Requests → your PR → **Merge pull request** → **Confirm merge**
#    → Optionally delete the branch (GitHub offers a checkbox)

Step # 7. Update your local main

!git checkout main
!git pull origin main

When you’re ready for a new release (e.g., v0.1.1 or v0.2.0)

Step # 1. Make sure main is clean and up-to-date

!git checkout main
!git pull origin main

Step # 2. Bump the version in pyproject.toml

#    Change: version = "0.1.0"  →  version = "0.1.1"  (or "0.2.0")

Step # 3. Commit the version bump

!git add pyproject.toml
!git commit -m "chore: release v0.1.1"

Step # 4. Create and push the new tag

!git tag v0.1.1
!git push origin v0.1.1
!git push origin main

Step # 5. Build the package

!python -m build

Step # 6. Upload to real PyPI

!python -m twine upload dist/*

The new version is now live on PyPI!

Single Day Workflow Summary

TaskCommand / Action
Start workgit checkout main && git pull
New feature/fixgit checkout -b feature/name
Commitgit add . && git commit -m “message”
Push branchgit push -u origin feature/name
MergeCreate & merge PR on GitHub
Release new version to PyPIBump version → tag → build → twine upload

Multi-day Workflow

This workflow is used when your development will take multiple days to complete.

# ── Day 1 ─────────────────────────────────────
!git checkout main
!git pull origin main
!git checkout -b feature/wifi-support          # create once

# … code, test on Pico/Pi, etc.
!git add .
!git commit -m "feat(wifi): add connection manager skeleton"

!git push -u origin feature/wifi-support       # only needed the very first time

# ── Day 2 ─────────────────────────────────────
!git checkout feature/wifi-support
!git pull origin feature/wifi-support          # get any remote changes (if collaborating)

# … more coding
!git add .
!git commit -m "feat(wifi): implement reconnect logic"
!git commit -m "test(wifi): add connection test cases"

!git push                                      # just push, no -u needed anymore

# ── Day 3, 4, 5… ───────────────────────────────
# (repeat the same 4 lines every day)
!git checkout feature/wifi-support
!git pull origin feature/wifi-support
# … code, test, add, commit, push …
!git add .
!git commit -m "your message here"
!git push

Pro tips for long-running features

SituationWhat to do
You want to keep your branch up-to-date!git pull origin main –rebase (keeps history linear)
Someone else merged something into main!git fetch && !git rebase origin/main
You need a quick hotfix on main!git checkout main && !git pull → fix → push → then !git checkout feature/wifi-support and continue
You’re done and ready to mergePush final commit → open PR on GitHub → merge → delete branch

Your daily loop

Bash

# Every morning (or after a break)
!git checkout feature/your-branch-name
!git pull origin feature/your-branch-name   # or git pull --rebase origin main

# Work → test → repeat as many times as you want
!git add .
!git commit -m "short, clear message"
!git push

Finally…

This post described how to manage GitHub releases. This is the process I use to manage development on the RPI-APP-FRAMEWORK. Please check out my other posts on this topic.

Total
0
Shares
Related Posts