git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: checkout vs reset

From
Sitaram Chamarty <sitaramc@gmail.com>
Date
Feb 26, 2009, 09:15 UTC
Message-ID
<slrngqcnd8.t1u.sitaramc@sitaramc.homelinux.net>
In-Reply-To
<76718490902252312h6a08f5a6x972523e7c7e4af16@mail.gmail.com>
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
Previous: Jay Soffian
Message 3 of 3 in “checkout vs reset”
  1. Jay SoffianFeb 26, 2009
  2. Jay SoffianFeb 26, 2009
  3. Sitaram ChamartyFeb 26, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.