Thomas Diesler wrote:
I don't rebase a branch that I've pushed to a public repo because it breaks forks that where taken from that branch. Instead I regularly merge the changes from master to my feature branch.
Rebasing doesn't really break forks of that branch, it just means that forks of that branch must in turn rebase before they can merge onto it. Use one of the alternate forms of rebase:
git rebase [-i | --interactive] [options] [--onto <newbase>]
git rebase [-i | --interactive] [options] [--onto <newbase>] <upstream> [<branch>]
<upstream> [<branch>]
git rebase [-i | --interactive] [options] --onto <newbase> --root [<branch>]
git rebase [-i | --interactive] [options] --onto <newbase>
--root [<branch>]
You just have to be sure that git knows what commits you're moving, and what you're moving them on to.