threads / discuss / 22607

git rebase -i and the reflog

Subject: git rebase -i and the reflog

## tl;dr

5 messages between Feb 10, 2010 and Feb 11, 2010.

replies: 4people: 4as markdown or json

Sverre Rabbelier· Feb 10, 2010, 22:19 UTC · lore
Heya,

I use "git rebase -i" a lot, and as a result the output from 'git log -g' and 'git reflog' is a tad messy. That is, it's (afaik) not possible to check that after my rebasing did not mess things up using something like 'git diff HEAD@{1}'. I could of course tag the old head or something, but that's not the only problem, due to the clutter it's hard to find genuine commits. What I want is a way to see HEAD's movement _excluding_ any rebase activity. So if I change history from A-o-B-C to A-o-B'-C', I want to see C and C' in the reflog, but not B', since B' is often actually identical to B, the only reason that it changed is that I did 'git rebase -i' on some far-back commit.

Is there an existing solution to this?
-- 
Cheers,

Sverre Rabbelier
Junio C Hamano· Feb 10, 2010, 22:23 UTC · re: Sverre Rabbelier · lore

Re: git rebase -i and the reflog

Sverre Rabbelier <srabbelier@gmail.com> writes:
> I use "git rebase -i" a lot, and as a result the output from 'git log
> -g' and 'git reflog' is a tad messy. That is, it's (afaik) not
> possible to check that after my rebasing did not mess things up using
> something like 'git diff HEAD@{1}'.

Yes and no. I too suffer from it but only when I rebase a detached HEAD state. If you rebased a topic, "git diff topic@{1}" (or "git diff @{1}") would give you what you want.

Sverre Rabbelier· Feb 10, 2010, 22:26 UTC · re: Junio C Hamano · lore

Re: git rebase -i and the reflog

Heya,
On Wed, Feb 10, 2010 at 23:23, Junio C Hamano <gitster@pobox.com> wrote:
> Yes and no.  I too suffer from it but only when I rebase a detached HEAD
> state.  If you rebased a topic, "git diff topic@{1}" (or "git diff @{1}")
> would give you what you want.

Ah, mhh, so the reason I'm seeing this cruft is that I'm using 'HEAD@' instead of 'topic@'. It only makes sense that HEAD's reflog includes every commit, and a topic's reflog includes just that topics. Thanks for the quick reply, this'll make my life a bunch easier :).

-- 
Cheers,

Sverre Rabbelier
Nicolas Pitre· Feb 11, 2010, 03:35 UTC · re: Sverre Rabbelier · lore

Re: git rebase -i and the reflog

On Wed, 10 Feb 2010, Sverre Rabbelier wrote:
Show 14 quoted lines
> Heya,
> 
> I use "git rebase -i" a lot, and as a result the output from 'git log
> -g' and 'git reflog' is a tad messy. That is, it's (afaik) not
> possible to check that after my rebasing did not mess things up using
> something like 'git diff HEAD@{1}'. I could of course tag the old head
> or something, but that's not the only problem, due to the clutter it's
> hard to find genuine commits. What I want is a way to see HEAD's
> movement _excluding_ any rebase activity. So if I change history from
> A-o-B-C to A-o-B'-C', I want to see C and C' in the reflog, but not
> B', since B' is often actually identical to B, the only reason that it
> changed is that I did 'git rebase -i' on some far-back commit.
> 
> Is there an existing solution to this?

What about looking at the reflog for the branch you're on instead of HEAD? In the reflog space they're different.

Nicolas
Patrick Sudowe· Feb 11, 2010, 07:29 UTC · re: Sverre Rabbelier · lore

Re: git rebase -i and the reflog

On Wednesday 2/10 2/10  11:19 PM, Sverre Rabbelier wrote:
Show 15 quoted lines
> Heya,
>
> I use "git rebase -i" a lot, and as a result the output from 'git log
> -g' and 'git reflog' is a tad messy. That is, it's (afaik) not
> possible to check that after my rebasing did not mess things up using
> something like 'git diff HEAD@{1}'. I could of course tag the old head
> or something, but that's not the only problem, due to the clutter it's
> hard to find genuine commits. What I want is a way to see HEAD's
> movement _excluding_ any rebase activity. So if I change history from
> A-o-B-C to A-o-B'-C', I want to see C and C' in the reflog, but not
> B', since B' is often actually identical to B, the only reason that it
> changed is that I did 'git rebase -i' on some far-back commit.
>
> Is there an existing solution to this?
>
Since nobody else mentioned it on the list.

You could also use ORIG_HEAD. merge, rebase and am (maybe others?) record the position of HEAD to ORIG_HEAD before their operation. So to check for the differences directly after one of these commands a diff between HEAD and ORIG_HEAD should do.

I really liked the shortcut of ORIG_HEAD when I found out about it just a couple days ago.

-Patrick

← back to recent threads