[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.0.98.0704191538460.9964@woody.linux-foundation.org>
Date: Thu, 19 Apr 2007 15:59:41 -0700 (PDT)
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Jeff Garzik <jeff@...zik.org>
cc: Avi Kivity <avi@...ranet.com>, linux-kernel@...r.kernel.org,
kvm-devel@...ts.sourceforge.net
Subject: Re: [GIT PULL] kvm oops fix
On Thu, 19 Apr 2007, Linus Torvalds wrote:
>
> You can either do
>
> git reset --hard ORIG_HEAD
> git reset --hard @{1}
Btw, on the same kind of subject: the whole "what was my previous HEAD"
issues are obviously also how you'd generally want to see what those
new patches were, regardless of whether you want to undo them or not.
So it might be worth repeating for people what I do after any pull that I
feel I want to give a quick look-over.. A simple
gitk ORIG_HEAD..
or
gitk HEAD@.....
or
gitk @{1}..
or
gitk @{12.hours.ago}..
are all variations of the same theme: show what is new since either "last
update" or "what I had in my tree 12 hours ago".
Btw, the
gitk @{12.hours.ago}..
thing is very different from
gitk --since=12.hours.ago
even if they involve the same date.
The "@{12.hours.ago}" syntax pinpoints a particular *commit*, namely what
your HEAD was pointing at 12 hours ago. So it's literally about your
particular repository history (give a branch name if you want to specify
one: so "for-linus@...hours.ago}" specifies the *commit* that was the head
of the "for-linus" branch in your repository 2 hours ago).
In contrast, the "--since=12.hours.ago" means something totally different:
it measn that you want to ignore all commits that are older than 12 hours,
regardless of whether they were actually in your tree at that point or
not. Which is often a very different issue indeed.
So another reasonably common things you can do:
git fetch linus
gitk linus@.....linus
this assumes that you've set up a separate tracking branch "linus", and
that you've taught it to fetch my current tree into it. So in the above
sequence, the "git fetch linus" will fetch everything new from my tree
into your "linus" tracking branch, and the "gitk" will then show all the
new commits on that branch that you got.
NOTE! The above is very much designed to work whether you are on that
branch or not, and in fact, the normal reason to do something like the
above is explicitly that you want to see what is going on in somebody
elses tree without actually necessarily merging it into your own branch
(perhaps in order to decide whether you _want_ to merge it or not).
And that "linus@{1}" really just means "what is the previous commit I had
on my 'linus' branch". You can obviously dig deeper down, and "linus@...}"
is something less commonly used, but basically means "what was on that
branch ten revision updates ago".
Note that this is *very*different* from "linus~10", which means "what is
the tenth _parent_ of the "linus" branch. They *can* be the same thing (if
each operation adds exactly one commit), but if you do things like "git
fetch", then the "linus" branch ten operations ago may be hundreds of
commits ago, because some of those ten operations may have added lots of
commits thanks to synching up with some other tree!
And as already noted, the "branch@...zzy}" format also allows "xyzzy" to
be a date, not just a numeral. In fact, that was the original revlog
tracking behaviour, and the numeric thing, while simpler, is actually a
newer feature (as is the "don't specify a branch name at all", which just
means "current branch")
So
gitk @{24.hours.ago}..
is a nice way to see what has happend in *your* repository, on the current
branch, in the last 24 hours.
(NOTE: You can also say "HEAD@...hours.ago}" and that actually doesn't use
the current branch at all, it actually says what HEAD was 2 hours ago: you
may have been on some totally _different_ branch back then, and if you
wonder what the heck of a branch you are running and you look at the time
of the binary, but you don't remember what branch you had checked out when
you built it, that may be what you want. Of course, you may also want a
better attention span ;)
Some of this is pretty recent, and generally, if some of this doesn't work
for you, it means that you are using some ancient version of git. If it's
not git-1.5.x, upgrade. It's worth it.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists