This is a quick document to show what is the difference between git rebase and git merge. Here is your situation: A---B---C topic / D---E---F---G master Now if you rebase topic to master, you'll get: A´--B´--C´ topic / D---E---F---G master and if you merge master to topic, you'll get: A---B---C---H topic / / D---E---F---G master where H is a merge commit. (It will have two parents: C and G.) Merge is done by git pull (it's git fetch + git merge). This is usually what upstream does. You don't want to merge when you maintain a patchset. You want git fetch + git rebase. NOTE: This will rewrite your history, so people should not clone your branch. Though this is not a big problem, usually people won't clone your code till it isn't merged. :) See also http://git.or.cz/gitwiki/GitFaq#head-1168c3027a2b7060df8c5cf141756c8e0e33139c