I was very surprised by the lack of testing braches in a staging environment before pushing to production. My guess is that Github must be very confident in their continuous integration tests to let so many branches go straight to production.
They’ve stated that they have at least one other person do a code review before deploying. When you have a comprehensive test suite, and do a bit of QA testing locally, it’s totally reasonable to push to production after a code review and the build is green.
The trick is to do many small patchsets and deploy often. This makes reasoning about the change easier. I tend to only use staging when testing data migrations. New/beta features can be pushed out behind a feature flag so that they can be tested in production by beta testers/staff.