Patch Set 1: I would prefer that you didn't submit this; No score

>> As far as I understood this code it will select given branch, 

You have a point here indeed, and I guess this is wrong more often than not; rebase is actually an example where it's wrong. Perhaps we need some boolean in the constructor telling the abstract class whether it should select the current branch or not.

Expanding both nodes might look like a good idea in most cases, but that could be done with the method discussed before as well.

On the other hand, I wonder what happens when you start having really many branches and expand both nodes.  Opening the local node might even push the remotes node out of sight so that you'd have to either collapse local or scroll down to get a chance to see the remotes node...

For Rebase, I guess that most of the time you would rebase onto something remote (that's at least my working style). Thus one would probably want to only expand remotes, not local, which again is something you would need the new method for...