@b0rkJulia Evans I worked at a company where each employee had a remote and there was also a shared remote where the main branches lived. Instead of each person cluttering up the same remote repo with their own topic branches, you would push them to your personal remote and keep that as tidy or as cluttered as you cared to; nobody else needed to care. And you could force-push or whatever you wanted, no concern about smashing other people's branches.
When you wanted to share code with a co-worker, you could tell them "it's on branch X on my remote" and they would pull it down. You can the co-worker could agree on whatever sharing workflow was convenient.
For code review, you would pull the shared main branch into your personal repo, rebase your topic branch onto it, and then as the reviewer to fetch and review it. If they liked it, you could push the approved branch right back to the share repo.
One problem that occurs when everyone shares a repo and puts their work branches there is that you will see a branch in it named "wip" and have no idea who it belongs to or how old it is. Who is authorized to delete it? When? What if that destroy's someone else's important work? If everyone keeps their work branches in their own repo, this doesn't happen. A branch named "wip" in your repo belongs to you and it's up to you whether and when to destroy it.
I found it very nice.