git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Lumby <johnlumby@hotmail.com>
To: Tim Mazid <timmazid@hotmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: git  --  how to revert build to as-originally-cloned?
Date: Fri, 20 May 2011 10:15:52 -0400	[thread overview]
Message-ID: <4DD67798.4050503@hotmail.com> (raw)
In-Reply-To: <SNT124-W51D709B129B6A940ED17F2C4710@phx.gbl>

Tim,  Thanks very much indeed for taking the time to provide all that 
explanation.    Very helpful.
Not sure I have understood all of it but it makes more sense now.

I will embed answers to specific questions you raised :

On 05/19/11 22:16, Tim Mazid wrote:
>
>>> Can you please post the commit message that you see in the first commit
>>> when doing a git log?
>> Here are the first three. I assume (not sure) they are what was merged
>> into the newer clone, /b, just before I cloned it
>>
>> ------------------------------------------------------------------------------
>> commit 89c64d755fbf04d7541d526931dc4b38301946d1
>> Merge branch 'master' of
>> master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-next-2.6
>>
>> commit 4dc6ec26fe7d9f89349d4c0c654e2f07420f4b27
>> Merge branch 'batman-adv/next' of
>> git://git.open-mesh.org/ecsv/linux-merge
>>
>> commit 5c5095494fb545f53b80cbb7539679a10a3472a6
>> ------------------------------------------------------------------------------
> You actually skipped the message of the third message there. :P

You're right.    as it happens,   after the reset back to origin/master,
that third merge is now the first one shown in the log and it reads

commit 5c5095494fb545f53b80cbb7539679a10a3472a6
Merge: 4d586b8 def5768
Author: David S. Miller <davem@davemloft.net>
Date:   Thu May 12 23:01:55 2011 -0400

     Merge branch 'master' of 
master.kernel.org:/pub/scm/linux/kernel/git/davem/net-next-2.6


> But I can see that the first two are actually merges. Were they both
> your doing? If so, doing a git reset --hard HEAD^ will only take you
> back one commit.
> See above, and then below.

Ah  - I should have said that I selected only merges in my git log 
command  -
git log --merges
(With no qualifier,   git log returns about 3.8 million lines /  150 
MBytes,   hard to work with)
And,  based on what the command now returns,  it seems that the first 
two that I listed before
(which are no longer present) were as a result of my (single) merge 
command,  i.e. my merge
resulted in merging :
     .   two merges that were done by someone else in the master that I 
cloned into my /b filesystem,
     .   maybe some other non-merge commits that I did not query before 
and now don't know

>
>> So I now think I see the problem with using a reset based on something
>> relating to commits -
>> apparently (??) there is nothing in the git log to distinguish commits
>> done by my last merge versus commits prior to that. I.e. the "merge"
>> does not appear to be logged as an event in its own right, only as the
>> commits inside it??
> Two points:
>   - in git, you have commits and "pointers to commits"; and
>   - the commit itself IS the merge.

You've lost me here.    If a merge can consist of many commits,  
including other merges (see above),
then how can one commit be a merge?     Note that in my original git log 
--merges output that I posted
in my earlier post,  i.e. the one before I reset,  there was *no* record 
of *my* merge command itself,
only of the sub-merges that my merge dragged along.   I think this is 
the crucial (to me) point -
git did not record what I did,  only the effects of what I did.    Not 
saying this is wrong or right,
but significant.

> See below.
>
>
>>> Also, if you just want to go back to a particular branch, you can
>>> specify it to git reset, in the form of "git reset --hard
>>> origin/master". This will reset (discarding any changes) YOUR branch to
>>> wherever origin/master happens to be, which, from reading your message
>>> seems to be where you want to go?
>> Ah - that did it, thanks Tim. I had seen that one but wasn't
>> sure whether it would reset me back to what I cloned or the master of
>> that clone i.e. way back to the "original" origin of this build.
>>
>> It seems if I had not created a separate branch -- I would now be
>> completely sunk?
> Your branches are completely separate to the branches of other repos.

Ah,  ok.    Good.

> See below.
>
>
>> It would be nice if there was a "git undo" which undid whatever changes
>> to files+index were made by the immediately preceding git command,
>> whatever it was and whatever it did.
> I believe (speculation) that the reason this hasn't been done is that
> there are too many things you can _DO_ in git in order to have a simple
> "undo" button. Compare it to having an "undo" button in real life; what
> and how much would it actually undo? There are simply too many different
> situations to have something as simple as undo.
> Having said that, there are ways to recover from almost every situation
> in git (most of which I'm yet to learn). See below.

I see it would be a large and tedious thing to code,  but I do think it 
would be
perfectly well-defined   :

     gather all relevant information about the most recent git command 
that changed
     either files or index or pointers,    and reverse its effects.

In my particular case,  with your insight,  I can now see that it would 
have been quite easy to delve into
the log and calculate how many carets or tildes I needed to revert back 
to the commit that
corresponded to my initial cloned state.

In a general case,   I think this could easily be a complex burden for a 
dumb user to have to do
compared with "undo what I just did".


>
>>> Be careful if you have made changes you want to keep, though.
>> No worries there although thanks for the warning.
> I've lost data a few times not thinking about what I was doing. :P
>
>
> Alright, so I promised you a crack at an explanation. List, please feel
> free to chime in and correct me where I am mistaken.
>
>
Yes,   I have used gitk and it helps a lot.

Thanks again     John Lumby

  reply	other threads:[~2011-05-20 14:16 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-18 22:53 git -- how to revert build to as-originally-cloned? John Lumby
2011-05-18 23:26 ` Tim Mazid
2011-05-19 15:27   ` John Lumby
2011-05-20  2:16     ` Tim Mazid
2011-05-20 14:15       ` John Lumby [this message]
2011-05-20 14:42 ` Philippe Vaucher
  -- strict thread matches above, loose matches on Subject: below --
2011-05-20 16:25 George Spelvin
2011-05-20 19:18 ` John Lumby
2011-05-20 19:34   ` Paul Ebermann
2011-05-20 20:22   ` George Spelvin
2011-05-20 20:26     ` George Spelvin

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=4DD67798.4050503@hotmail.com \
    --to=johnlumby@hotmail.com \
    --cc=git@vger.kernel.org \
    --cc=timmazid@hotmail.com \
    /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).