When your histories look like this:
A your 'master'
/
---X---U---V---W---Y public 'master' (your 'origin')instead of creating a single merge like this with "git pull":
A---------------M your 'master' (fully merges 'origin')
/ /
---X---U---V---W---Y public 'master'you want to create a history like this?
A---J your 'master' (lacks V, W and Y)
/ /
---X---U---V---W---Y public 'master'For that, you can fetch first.
git fetch origin
Then look at the history in gitk
gitk master origin
And find the commit you are interested in merging (U in the above picture). And merge it.
git merge origin~3
Replace "origin~3" in the example above with whatever commit you want to merge the entire history leading to it.
You can repeat this final step as many times you want. For example, if you want create a history like this:
A---J---K---L---M your 'master'
/ / / / /
---X---U---V---W---Y public 'master'you can do so by repeating the last step for V, W and Y in turn.
In general the public history isn't necessarily a single straight line like this picture and it doesn't make sense to merge one at a time for all the commits on the public branch, but if that is what you really want to do, you can do so.