When I do a \'git log\', why is the date of the commits out of order?
I am looking at 1 branch of my repository. the date should be in order, right?
There's no guarantee that the dates should be in any order. In fact, you can easily forge dates with Git.
Most likely, though, this is due to rebasing or cherry-picking. E.g., what I often do is commit some work locally, then git pull --rebase
. The result is that history is rewritten so that my commits are now children of the commits that were introduced in origin/master
in the meantime, but git rebase
does not change the date of the commits in the process. git cherry-pick
has the same effect.
If you want to see the dates at which changes were commited, you can do git log --pretty=fuller
to see the CommitDates
as well as the AuthorDates
. These are more likely to be in order, but even here, there's no guarantee.
No, not necessarily.
Git tracks two dates. The author date says when the original author made the commit. In the case of email patches it might be taken from an email date. The patch might be applied at a much later time.
The commit date is often in order as that says when a commit is made, and a commit can only be made when its parent exists. If a commit is rebased or cherry-picked it will be given a new commit date but the original author date will be preserved. However, even the commit date is taken from the local system time of the machine where it is made so it is subject to whatever the local clock happened to be set to. In general there's no guarantee that this will be accurate or consistent across machines.
(Both dates include timezone information.)