...
Start from the main branch:
git checkout main
Create local development branch:
git checkout -b dev/my-feature
Publish development branch:
git push -u origin dev/my-feature
... perform feature development ...
... any series of commits, merges, rebases, squashes, etc. ...
Prepare to merge development branch:
git rebase -i main
Move back to parent branch:
git checkout main
Bring in the feature's final set of commits:
git merge --ff-only dev/my-feature
Publish:
git push
Delete remote development branch:
git push --delete origin dev/my-feature
Delete local development branch:
git branch -d dev/my-feature
...