Re: why is git destructive by default? (i suggest it not be!)
From: Teemu Likonen <hidden>
Date: 2016-06-15 22:44:48
David Jeske wrote (2008-06-23 22:01 -0700):
On Mon, Jun 23, 2008 at 9:59 PM, Teemu Likonen [off-list ref] wrote:quoted
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-reflogsPerhaps 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 [off-list ref])
Reflog message: Branch: renamed refs/heads/master to refs/heads/testbranch
Author: Teemu Likonen [off-list ref]
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.