Re: About detached heads

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

 



On 2008.03.14 10:53:25 -0700, Linus Torvalds wrote:
> 
> 
> On Fri, 14 Mar 2008, Geoff Russell wrote:
> >
> > This should be simple! I have a series of commits:
> > 
> >            1---2---3---4---5
> > 
> > I want to go back to 3 but not branch, so I want
> > 
> >            1---2---3---4---5---3
> 
> This is actually an uncommonly easy operation for core git, but it's a 
> very unusual thing to want to do in general, so I don't think there is any 
> high-level command to do it directly. But it's really easy to do with 
> a single so-called "plumbing" command, namely "git read-tree".
> 
> So the "core git" way to do it is to literally just do
> 
> 	git read-tree -u -m 3
> 	git commit
> 
> (or use "--reset" instead of "-m" if you want to do it even in the 
> presense unmerged entries).
> 
> What the above does is to literally just read the tree state at "3", and 
> make it the new index: the "-u" means that we also want to update the 
> working tree to that state, and the "-m" means that we will merge in the 
> old index stat information.
> 
> The commit then will then create the actual new commit: it will have the 
> exact same tree as your commit '3', but it will be a new commit (so call 
> it 3').
> 
> Of course, people have already pointed out that another easy way to do it 
> is to just revert 5 and 4. That may be the more high-level way to do it, 
> but the git-read-tree approach actually has the advantage that it will 
> work even across merges etc, and it will be very unambiguous: we want 
> *exactly* the state at commit 3 back, nothing else.

Hm, that's just squashing revert commit. Squashing can be done via:
git reset --soft HEAD~5    # Or wherever your squashed commit should start
git commit -m "Squashed from HEAD~5 onwards"

Now the "revert" version of that:
git reset --hard HEAD~5      # Go back to the state that we want
git reset --soft ORIG_HEAD   # Move HEAD back, but keep the index as is
git commit -m "Back at the state of HEAD~5"

AFAICT that should have the same advantages as using read-tree, but
doesn't feel so low-level :-)

Björn
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[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