I know how to do a git rebase from the command line, but how do you do it with the official git-gui?
You can do a full interactive rebase with git gui, complete with commit selection, rewording and conflict resolution! In addition to Ted Percival's answer, Add this to your ~/.gitconfig:
[guitool "Rebase interactive"]
cmd = EDITOR=gvim git rebase -i $REVISION
revprompt = yes
You must use a graphical editor -- plain old vim won't work, but gvim will. You may use any gui editor, I use nedit for example. A separate window of this editor will pop-up any time you need to input something: initially selecting commits, rewording commit messages (whether for reword or squash commits), etc.