Re: Git in a Nutshell guide

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Nov 19, 2007, at 5:45 PM, Lars Hjemli wrote:

On Nov 19, 2007 2:05 PM, Jonas Juselius <jonas.juselius@xxxxxxxxxxx> wrote:
Also, I think you might scare users away from 'git reset':

  git reset resets the branch to a specified state invisibly and
  without possibility to go back. Ever. Your call.

That's not true, since any "modern" git has reflogs enabled. If you do
'git reset --hard HEAD^^^' and then realize it was a mistake you can
just 'git reset --hard HEAD@{1}'
Yes, I've always been very scared of git-reset until I had a somewhat  
better understanding of Git internals.  In fact the only danger of  
`git reset --hard' is that you loose dirty changes (not yet in the  
index) and staged changes (in the index).  git-reset will never, ever  
delete objects from your repo.  Thus, you can perfectly well remember  
the current revision sha1 (let's call it `A') and then git reset -- 
hard HEAD~42 and then git reset --hard A.  In between the two Git  
commands, it's possible that all the objects of the history from  
HEAD~42..A be unreachable.  Nothing wrong with this, it just that if  
run, say, git gc --prune (note the --prune) you will loose them.
Understanding this is very important because ``error humanum est'',  
and people happen to screw up their hard work and they don't realize  
that they can go back without even knowing what the hell the reflog  
is or how to use it (I personally don't know -- but I'd like to, give  
me pointers please :D).  For instance, I once rebased a dozen of  
commits on a given branch and I realised that I completely screwed my  
nice patch series by collapsing changes, introducing changes at the  
wrong revision etc.  I could start over again by simply doing a git  
reset --hard <HEAD_sha1_before_rebase>.
Cheers,

--
Benoit Sigoure aka Tsuna
EPITA Research and Development Laboratory


Attachment: PGP.sig
Description: This is a digitally signed message part


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux