One feature that might make git more intuitive to people is if we were to additionally track the history of what commit was the head of each branch over time. This is only vaguely related to the history of the content, but it's well-defined and sometimes significant. E.g., if you know that two weeks ago, what you had worked, but it doesn't work now, you can use git-bisect to figure out what happened, but first you have to figure out what commit it was that you were using two weeks ago. Two weeks ago, we had that information, but we didn't keep it. It would probably also be useful for showing changelogs in a locally-useful order. If you merge in a tree that's been in separate development for a long time, the commits in that tree will be interleaved in commit date with the commits you did locally. You tend to want to attribute all of the changes that happened in the merge to the time of the merge, but that commit object isn't going to tell you anything useful, because it may have been done by the other tree (and you fast-forwarded to the merge). In fact, you may want to attribute the changes to the fast-forward, which can't recorded in the content history, because nothing happened to the content. On the other hand, if we were to also record the branch history, we could give output which shows changes in the order they reached the local tree (then ordered by the commit tree), just by having it do: <time now> git log <head-as-of-before>..<head-of-of-now> <time before> git log <head-as-of-before-that>..<head-as-of-before> <time before-that> and so forth. -Daniel *This .sig left intentionally blank* - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html