Eine Sache ist klar: Rebase ist Böse, wenn es sich im Branches handelt, die schon publiziert wurden. Aber ab einer bestimmten Anzahl von parallel entwickelten Features (von Entwicklern will ich garnicht erst reden) wird es in der History unübersichtlich, wenn alle Commits zu allen Features nebeneinander stehen.
Es ist aber durchaus nicht abwegig, seine eigenen Branches in der Entwicklung gelegentlich zu rebasen. Wenn man bis dahin mit feature branches und --no-ff merges gearbeitet hat, stellt man aber schnell fest, dass Git die "überflüssigen" Merge-Commits einfach wegbügelt. Inhaltlich mag das sinnvoll sein, schließlich trägt ein Change, der nichts ändert, nichts zum Code bei (alle Ängerungen sind vorher geschehen). Wenn man aber mit kleinteiligen Commits arbeitet, verliert man so den Zusammenhang zwischen den Commits: Was gehörte jetzt zu dieser Implementierung, und was nicht?
Glücklicherweise hat Git ein Feature, welches zumindest beim Rebase das Zusammenfassen der Merge-Commits vermeidet: Mit
git checkout myfeature git rebase -p master
wird der branch myfeature auf master rebased, wobei die Branch-Struktur im myfeature-Branch erhalten bleibt.
Mit git rebase sind noch mehr praktische Dinge möglich (ich meine hiermit Dinge, die einzelne Commits lesbarer machen). Aber nie vergessen: Einmal publizierte Branches darf man nur noch umschreiben, wenn man mit dem Frust aller Entwickler leben kann, die dann aufwändig ihre Commits neu einsortieren müssen.
Also eigentlich nicht.