On Wed, Dec 5, 2018 at 6:56 AM Konstantin Khomoutov <kostix@xxxxxxxx> wrote: > > On Wed, Dec 05, 2018 at 05:22:14PM +0300, Konstantin Kharlamov wrote: > > > It would be great if git-log has a formatting option to insert an > > index of the current commit since HEAD. > > > > It would allow after quitting the git-log to immediately fire up "git > > rebase -i HEAD~index" instead of "git rebase -i > > go-copy-paste-this-long-number-id". > > This may have little sense in a general case as the history maintained > by Git is a graph, not a single line. Hence your prospective approach > would only work for cases like `git log` called with the > "--first-parent" command-line option. > > Still, for a simple approach you may code it right away yourself. > Say, let's create an alias: > > $ git config alias.foo '!git log "$@" --pretty=oneline --source | { > n=0; > while read sha ref rest; do > printf "%s\t%s~%s\t%s\n" "$sha" "$ref" $n "$rest" > n=$((n+1)) > done > }' > > Now calling `git foo --abbrev=commit` would output something like > > 9be8e297d HEAD~7 Frobincated fizzle > > where "7" is what you're looking for. > > A more roubst solution may need to use the `git rev-list` command. Or, just use name-rev so it works with non-linear histories too: git log | git name-rev --refs=$(git symbolic-ref HEAD) --stdin | less That'll add things like "master~7" for stuff in the first parent history and output like "master~7^2~3" for commits on side-branches, either of which can be fed to other git commands.