This was really really educational. Git internals seem rather simple.
Does anyone have a really good visual explanation of what's being done to the tree and such when commits and merges and rebases are done? I still don't quite grok it intimately enough.
Ungit[0] shows what will happen to the tree before you execute a merge or rebase. It really helped me get a hang of Git.