I'm liking a lot "a simple git branching model". It keeps the master clean, history nicely formatted and informative, you can do code reviews on feature pushes, etc. But I'm confused with one aspect of it - why rebase on top of the pushed feature branch, what goal does it serve? If the branch is pushed for review, you will not have any commits to it so no reason to rebase. If the branch is used for collaboration, you would be probably better off just merging in other participant changes and rebasing on origin/master only. What I am missing?
P.S. Bonus question - if you use branches for pull requests, but you need to collaborate on the branches with other people, what is the best practice here? Is it common to have pull requests for branches?