Kirill Likhodedov <kirill.likhodedov@xxxxxxxxx> writes: > Is it intended behavior that the default git log output (without > ordering parameters) can show parents before children? > > The man says: > Commit Ordering > By default, the commits are shown in reverse chronological order. > so it tells nothing about parent-to-child relationship. When you do not give order and when your traversal is not "limited" (i.e. you do not specify A in "git log A..B" that tells us where the traversal ends in topological sense), the traversal "git log" goes: - We put HEAD to a queue that holds commits that are further to be processed. - We pick up the youngest commit from the queue; we show it, and push its parents that haven't been shown to the queue. We repeat this step until the queue runs out items. Your history, when a project participant uses a broken clock to record the committer timestamp, could look like this (topology flows from left to right): 1---5---6 / / 2---3---4 where the labels in the illustration depict the relative order of their committer timestamps. Imagine your HEAD is at '6'. So "git log" would do Queue Action 6 show 6, push 5 to the queue 5 show 6, push 1 and 4 to the queue 4 1 show 4, push 3 to the queue 3 1 show 3, push 2 to the queue 2 1 show 2; nothing pushed (as it is root) 1 show 1; nothing is pushed (as its parent 3 has already been shown) -empty- -- To unsubscribe from this list: 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