From: Linus Torvalds <torvalds@linux-foundation.org>
To: Bill Lear <rael@zopyra.com>
Cc: git@vger.kernel.org
Subject: Re: 'git checkout -f' versus 'git reset --hard'
Date: Thu, 5 Apr 2007 08:43:15 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.64.0704050837330.6730@woody.linux-foundation.org> (raw)
In-Reply-To: <17940.64329.10165.993967@lisa.zopyra.com>
On Thu, 5 Apr 2007, Bill Lear wrote:
>
> After a failed merge, I want to undo things. I typically use git
> reset --hard, and it works like a charm. Others have tried to use git
> checkout -f, but I have cautioned that git reset --hard is really the
> way to do it. Is there a difference here, or are they equivalent?
They are equivalent, but *only* if not given any other arguments (or if
given "HEAD", which is obviously the default).
HOWEVER! If you give them an argument, they work very differently. So
git checkout -f <branchname>
git reset --hard <branchname>
are fundamentally different operations: the "git checkout -f" thing will
*switch* to the named branch (or create a detached HEAD if it's just a
random commit SHA1 and not a branchname), while the "git reset --hard"
thing will *force* the current branch top commit to the same as for
<branchname>.
It just so happens that without any branchname they both default to the
"current branch", and then the two end up doing the exact same thing, even
though conceptually they are very different operations.
So they really are fundamentally different, it's just that for the common
special case they end up doing the same thing.
Linus
prev parent reply other threads:[~2007-04-05 15:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-05 13:36 'git checkout -f' versus 'git reset --hard' Bill Lear
2007-04-05 13:43 ` Jeff King
2007-04-05 15:29 ` Shawn O. Pearce
2007-04-05 15:43 ` Linus Torvalds [this message]
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=Pine.LNX.4.64.0704050837330.6730@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=git@vger.kernel.org \
--cc=rael@zopyra.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).