Sometimes we fork an upstream project to contribute bug fixes. We check out a new branch, commit changes and send a pull request to upstream. But it may take some time for the pull request to be handled and during this time additional changes may occur in the upstream. In this case, should we merge the new upstream head or rebase our changes on it?
If our repository is private, I think rebase gives a cleaner history. But there is a principle that you shouldn't rebase commits that have been published remotely. When we are using public git servers such as github, does this mean merging is our only choice? Is it recommended that we leave the branch as it is for upstream developers to handle (i.e. non-fast-forwards)?