According to the Github for Mac blog announcement,
Once you\'re ready to share your commits, or pull in remote commits — just press the Sync Branch butto
The blog post "Rebasing Merge Commits in Git" (from Glen Maddern) illustrates the danger of a git pull --rebase when you have made local merges:

If you do a git pull --rebase of master on top of origin/master now, you would delete your local merge.
See the next picture after the rebase: no more merge commit.

This is bad for a whole lot of reasons.
- For one, the feature commits are actually duplicated, when really I only wanted to rebase the merge. If you later merge the feature branch in again, both commits will be in the history of
master.- And
origin/feature, which supposed to be finished and inmaster, is left dangling.
Unlike the awesome history that you get from following a good branching/merging model, you’ve actually got misleading history.
For example, if someone looks at the branches onorigin, it’ll appear thatorigin/featurehasn’t been merged into master, even though it has! Which can cause all kinds of problems if that person then does a deploy. It’s just bad news all round.
That is what Github for (Mac|Windows) would detect and avoid.
If you didn't detect it in time, the same blog post mentions the following recover:
[master] git reset --hard origin/master
HEAD is now at 9f3e34d sneaky extra commit
[master] git merge --no-ff feature
Actual Solution:
You can achieve the desired result:

Instead of using
git pull --rebase, use agit fetch originandgit rebase -p origin/master
I suppose the "smarter version" of pull --rebase is that combination of "fetch + rebase preserving the merge".
Glen also proposes the following aliases to counter the fact that this sequence of command would no longer use the tracking information associated to a local branch.
function git_current_branch() {
git symbolic-ref HEAD 2> /dev/null | sed -e 's/refs\/heads\///'
}
alias gpthis='git push origin HEAD:$(git_current_branch)'
alias grb='git rebase -p'
alias gup='git fetch origin && grb origin/$(git_current_branch)'
Jason Weathered posted a "http://jasoncodes.com/posts/gup-git-rebase", but now refers to git-up, from Aanand Prasad.
Although @VonC’s answer is pretty darn useful, I wanted to mention of newer legit. Basically what legit does is a smart merge (much similar, if not equal, to what GitHub for Mac does):
git log --merges branch..from_branchmerge, otherwise do a rebasegit pull --rebase doesn’t work as per @VonC’s answer, whereas git rebase --preserve-merges is kinda better, but creates duplicate commits if you have merged other branches in; so you need to decide at some point if “rebase” is actually makes sense, or should you “merge” instead and that’s what legit does precisely (again: just like GitHub for Mac).