I doubt that #1 is possible at all, and #2 is definitely possible with some plugin (I remember trying one back then, which populated the command palette with all sorts of git commands).
W.r.t. the other stuff I don't know whether it's possible to do with Sublime, so I'll tell you about my workflow. Hope this might be useful.
For committing and viewing history (on per-repo, per-folder and per-branch basis) I rely on external tools. No need for something fancy, lightweight stuff like TortoiseGit on Windows and GitX on Mac will do (don't use Linux, so don't know). You can invoke them right from sublime by writing a custom command. Such a command can either take the name of the current file/folder to feed into a tool or can display a folder selector.
Using that plugin from #2, you'll get pulls as well, so the only question left is how to select a remote for push. If noone supports it out of the box, it should be fairly easy to implement as a custom WindowCommand written in Python. Use a shell command to find out a list of remotes (
git remote) and
self.window.show_quick_panel to display a list of remotes in a simple UI within Sublime.