I've tried several. It's mostly for my own and open source projects with up to 10 users. I can't speak for big teams.
- Self-hosted without special service, just ssh and git. Worked pretty well for solo projects, but sharing and backups were a pain.
- Bitbucket (free) worked pretty well. It has most features but overall for some reason I find it slightly less smooth to work with than Github. But it works quite well and I still have some old projects on there that get pull requests sometimes.
- I had a self-hosted Githlab for one or two years. Gitlab itself is nice, but the self-hosting thing didn't work - it'd stop working after updates several times a year, and then I'd have to spend several hours fixing it.
- Github (free) works well for open-source projects. Most open-source projects in the world are on here it seems, and it is very polished and complete. I've started all my new open source projects here some years now.
- Github (paid) is similar but allows private repos. I moved the self-hosted private repos here, and also use it for small teams sometimes.
- I also had a look at COGS as a self-hosted solution. It seemed simple but I never ended up installing it because I moved to paid Github.
So basically for individual developers, I recommend Github.