Pull Requests (or whatever their equivalents are called in your favorite Git distribution) are a norm. Most of us adopted them as the primary way of reviewing and accepting changes that will ultimately be deployed to production. They work hand-in-hand with feature branches.
This article will try to compare GitHub, GitLab and BitBucket Server (previously called Stash) installed on your own servers. Similar comparison of cloud offerings is outside the scope of this article. I won't try to go feature by feature in some kind of a table so that you can count who has more features. I find that approach often misleading even though it's very commonly used among companies (especially where there is a software architect around). Instead, I'll give my opinionated view.