@b0rk For me there are really three avenues: CLI, GUI, and the Bitbucket (or, one upon a time, Github) web interface for branch and pull request management.

I use the git CLI for most local operations, but branches are usually created and merged non-locally through Bitbucket. And when there are conflicts that make that impossible, I use Bitbucket's Sourcetree tool along with Visual Studio Code's merge support to handle them.