threads / discuss / 18028

checkout vs reset

Subject: checkout vs reset

## tl;dr

3 messages between Feb 26, 2009 and Feb 26, 2009.

replies: 2people: 2as markdown or json

Jay Soffian· Feb 26, 2009, 07:08 UTC · lore
Is there any different between the following two commands?

git reset <commit> -- <paths>... git checkout <commit> -- <paths>...

As far as I can tell from the man pages, they are equivalent. To wit: both update the index and working copy for the given paths to the state that they were in in <commit>.

j.
Jay Soffian· Feb 26, 2009, 07:12 UTC · re: Jay Soffian · lore

Re: checkout vs reset

On Thu, Feb 26, 2009 at 2:08 AM, Jay Soffian <jaysoffian@gmail.com> wrote:
Show 8 quoted lines
> Is there any different between the following two commands?
>
> git reset <commit> -- <paths>...
> git checkout <commit> -- <paths>...
>
> As far as I can tell from the man pages, they are equivalent. To wit:
> both update the index and working copy for the given paths to the
> state that they were in in <commit>.

Doh, answering my own question. reset only touches the index, not the working copy. checkout updates both.

j.
Sitaram Chamarty· Feb 26, 2009, 09:15 UTC · re: Jay Soffian · lore

Re: checkout vs reset

On 2009-02-26, Jay Soffian <jaysoffian@gmail.com> wrote:
Show 12 quoted lines
> On Thu, Feb 26, 2009 at 2:08 AM, Jay Soffian <jaysoffian@gmail.com> wrote:
>> Is there any different between the following two commands?
>>
>> git reset <commit> -- <paths>...
>> git checkout <commit> -- <paths>...
>>
>> As far as I can tell from the man pages, they are equivalent. To wit:
>> both update the index and working copy for the given paths to the
>> state that they were in in <commit>.
>
> Doh, answering my own question. reset only touches the index, not the
> working copy. checkout updates both.

However, if the <commit> doesn't even _have_ the <path> in question, it leaves the index alone (doesn't remove it, for instance):

Using HEAD as the <commit> in question for this example:
    echo hi > abc       # new file, untracked so far
    git add abc
    git status          # it's staged
    git reset HEAD -- abc
    git status          # untracked
    # now with checkout
    git add abc
    git status          # staged
    git checkout HEAD -- abc
    git status          # still staged

← back to recent threads