All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Daniel Wagner <wagi@monom.org>
Cc: git@vger.kernel.org
Subject: Re: 'git log' numbering commits?
Date: Thu, 12 Apr 2012 04:41:23 -0400	[thread overview]
Message-ID: <20120412084122.GG31122@sigill.intra.peff.net> (raw)
In-Reply-To: <4F868A24.9090004@monom.org>

On Thu, Apr 12, 2012 at 09:54:12AM +0200, Daniel Wagner wrote:

> My workflow involves a lot of "git rebase -i". For figuring out which
> commit id to use I do first a 'git log --oneline'. Then I do copy past
> the id to the 'git rebase -i'. The reason why I don't use relative
> id such as HEAD~4, because I keep miscounting the commits.
> 
> So my question is there a magic option to have git log to enumerate the
> commits, e.g.
> 
> 1: 2fcd2b3 network: Remove unused function
> 2: b376b2a session: Fix introspection for Change()
> 3: 15c9cd0 wifi: Refactor desctruction of network object
> 4: a9c699f network: Remove device pointer in network_remove()

No, there is no such feature. You can do this:

  git log --oneline | nl "-s: "

but that will just give you the count of commits shown. If the history
is not a single line of development, then those numbers will become
meaningless quickly. Also note that there is an off-by-one in this
scheme; HEAD~2 will be numbered as "3".

If you wanted to simply decorate each commit with a more readable name,
you could do this:

  git log --format='%H: %s' |
  git name-rev --stdin --name-only

though for simplicity, you may find that you prefer to name only based on
the current tip. You can do that like this:

  git log --format='%H: %s' |
  git name-rev --stdin --name-only \
    --refs `git symbolic-ref HEAD`

which yields output like:

  your-topic: network: Remove unused function
  your-topic~1: session: Fix introspection for Change()
  your-topic~2: wifi: Refactor desctruction of network object
  your-topic~3: network: Remove device pointer in network_remove()

However, if you really just want this to make "rebase -i" easier, have
you considered setting the upstream branch config for your branches?
When I create a topic branch, I do:

  git checkout -b topic origin/master

And then "git rebase -i @{upstream}" rebases everything up to my
upstream branch (origin/master). That may be slightly more than I want,
but it lets me see the whole series in the "rebase -i" sequencer. Recent
versions of git even default to "@{upstream}", so you can just say "git rebase
-i".

How do you usually create your branches? What version of git are you
using (the "@{upstream}" default is in v1.7.6 and later)?

-Peff

  reply	other threads:[~2012-04-12  8:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-12  7:54 'git log' numbering commits? Daniel Wagner
2012-04-12  8:41 ` Jeff King [this message]
2012-04-12  9:15   ` Daniel Wagner
2012-04-12 18:14     ` Philippe Vaucher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120412084122.GG31122@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=wagi@monom.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.