Exactly! It's called the GithubFlow methodology. Features are developed on feature branches and merged into main after review and testing.
Typically, what happens after merge is an auto-deploy to a staging environment with a manual/gated deploy to production.
Once staging is deployed you validate (different topic) and then can manually release to production. If staging looks bad you can revert the changes and continue to iterate on the feature branch.
This keeps work from piling up in a staging branch and you not being able to track or control what gets released when.