From: "Björn Steinbrink" <B.Steinbrink@gmx.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Geoff Russell <geoffrey.russell@gmail.com>, git@vger.kernel.org
Subject: Re: About detached heads
Date: Fri, 14 Mar 2008 19:37:31 +0100 [thread overview]
Message-ID: <20080314183731.GA2994@atjola.homenet> (raw)
In-Reply-To: <alpine.LFD.1.00.0803141041080.3557@woody.linux-foundation.org>
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
next prev parent reply other threads:[~2008-03-14 18:38 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-14 9:46 About detached heads Geoff Russell
2008-03-14 9:51 ` Jonathan del Strother
2008-03-14 10:39 ` David Kågedal
2008-03-14 10:15 ` Wincent Colaiuta
2008-03-14 10:48 ` Matthieu Moy
2008-03-14 11:17 ` Wincent Colaiuta
2008-03-14 10:52 ` Jakub Narebski
2008-03-14 12:16 ` Sergei Organov
2008-03-14 12:28 ` Adam Piatyszek
2008-03-14 13:42 ` Chris Shoemaker
2008-03-14 14:53 ` Rafael Garcia-Suarez
2008-03-14 15:19 ` Nicolas Pitre
2008-03-14 15:21 ` Jakub Narebski
2008-03-14 17:53 ` Linus Torvalds
2008-03-14 18:37 ` Björn Steinbrink [this message]
2008-03-14 18:51 ` Linus Torvalds
2008-03-14 19:11 ` Jakub Narebski
2008-03-14 19:17 ` Sean
2008-03-14 23:43 ` Geoff Russell
2008-03-15 0:03 ` Jakub Narebski
2008-03-15 0:38 ` Nicolas Pitre
2008-03-15 2:03 ` Geoff Russell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080314183731.GA2994@atjola.homenet \
--to=b.steinbrink@gmx.de \
--cc=geoffrey.russell@gmail.com \
--cc=git@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).