git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Walking commits from the first

From
Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
Date
Feb 15, 2010, 11:33 UTC
Message-ID
<e72faaa81002150333r4eb27a15t7de6b3c820eb4bc2@mail.gmail.com>
In-Reply-To
<20100215080646.GD5347@coredump.intra.peff.net>
> In most repositories, you can do this:
>
>  git checkout `git rev-list --reverse HEAD | head -n 1`
>
Thanks for the command
Show 29 quoted lines
> It is not as simple as that, for two reasons.
>
> For walking backwards, you can take multiple paths from merge commits
> (which have multiple parents). So there may actually be several "first
> commits" if unrelated lines of development were merged together. For
> example, in git.git:
>
>  $ git log --format='%h %p' |
>    grep ' $'
>  16d6b8a
>  cb07fc2
>  161332a
>  1db95b0
>  2744b23
>  e83c516
>
> There are six root commits. You can see what they are by piping the
> above into "tr -d ' ' | git log --no-walk --stdin".
>
> For your "--next" suggestion, it is even worse. There may be an infinite
> number of commits that point to a given commit as the parent. So there
> is no such thing as "what came next from X". You can only ask
> "leading up to some commit Y which is a descendant of X, what was the
> commit that came after X". But while there are a finite number of
> answers, there is not necessarily just one. If two branches diverged at
> X and then remerged before Y, they are both equally "next".
>
> -Peff
>

My bad. I never thought of branch merging while writing this So, if i want to get the second commit, Is this enough or will i get the problem of branch diverging, if there is a branch diverging from there.

git checkout `git rev-list --reverse HEAD | head -n 2`

Even though we have the problem branches to travel reversely, we can do it in another way. As, we have the timestamp for every commit, then it will be easy to implement --next. Take the next commit in timeline and checkout. Even though it's completely different branch, no problem as long as we are going in order.

Also we can have git checkout --next --same-branch to checkout the next commit in timeline of the same branch.

Previous: Jeff KingNext: Jon Seymour
Message 3 of 5 in “Walking commits from the first”
  1. Pavan Kumar SunkaraFeb 15, 2010
  2. Jeff KingFeb 15, 2010
  3. Pavan Kumar SunkaraFeb 15, 2010
  4. Jon SeymourFeb 15, 2010
  5. Jon SeymourFeb 15, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.