This is the best explanation of when to merge vs. rebase that I've seen: http://blog.sourcetreeapp.com/2012/08/21/merge-or-rebase/
There's also now a public beta of SourceTree for Windows available: http://blog.sourcetreeapp.com/2013/03/19/introducing-sourcetree-for-windows-a-free-desktop-client-for-git/ In regards to these unwanted merges, I've seen GitHub for Windows do this automatically instead of giving an error when you click it's Sync button and your local develop branch has commits that have not been pushed yet but the remote also also has commits that are not yet on the local develop branch. --Dasa
