Re: why is git destructive by default? (i suggest it not be!)
- From
- Teemu Likonen <tlikonen@iki.fi>
- Date
- Jun 24, 2008, 05:43 UTC
- Message-ID
- <20080624054313.GB3125@mithlond.arda.local>
- In-Reply-To
- <e80d075a0806232201o3933d154he2b570986604c30a@mail.gmail.com>
David Jeske wrote (2008-06-23 22:01 -0700):
Show 12 quoted lines
> On Mon, Jun 23, 2008 at 9:59 PM, Teemu Likonen <tlikonen@iki.fi> > wrote: > > > I'm also quite new and I actually feel safe using git, and it's > > because of reflog. No matter what I do (except manual reflog expire) > > I can see where I was before with command > > > > git log --walk-reflogs > > > Perhaps I'm misunderstanding how to read it, but how do you tell where > a branch was from the reflog if you inadvertantly moved it?
Perhaps I'm misunderstanding what you mean but I try to explain. In git branches are nothing but named pointers to certain commit. If you "move a branch" you actually rename the pointer, nothing more. With command
git log --walk-reflogs --all
you can see everything in your reflog. When branches are moved (i.e., renamed) in "git log --walk-reflogs" output it shows like this:
commit 269f10bca2273c1cf77831d5e23c6e0361217697
Reflog: refs/heads/master@{2008-06-24 08:15:56 +0300} (Teemu Likonen <tlikonen@iki.fi>)
Reflog message: Branch: renamed refs/heads/master to refs/heads/testbranch
Author: Teemu Likonen <tlikonen@iki.fi>
Date: 2008-03-25 19:10:40 +0200
[commit message]See the "Reflog message" field above. It tells what happened. The "Reflog" field tells when it happened. If I later remove this "testbranch" I can browse the reflog and create this branch (i.e. a pointer) again with command "git branch testbranch 269f10bca". The 269f10bca comes from the commit ID of the above log item.