Assuming example.com as the site in question.
Assuming you are working from MacOS, our local development is done using something like Laravel Valet.
So your local site for a given project will be example.test
This environment is ideally on the same server as production, but can potentially be anywhere. The dev git branch should be set up to auto-deploy here.
The domain should ideally be dev.example.com.
This is for testing several new feature branches together at once. It will always be the most ahead.
This environment must be the same as production in order to keep server variables consistent.
The domain should ideally be stage.example.com.
This environment is for QA’ing specific branches that have been marked for release. It will be exactly what get’s pushed to production.
This is the live production environment example.com.