Re: [RFC/PATCH 1/2] reset: learn to reset to tree
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 1, 2012, 09:24 UTC
- Message-ID
- <7vd2yunn0e.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <CANiSa6i2f-4jXFUpYV6+fYnpG-tSRRA3cRg_v-v=UrgfwfFz_g@mail.gmail.com>
Martin von Zweigbergk <martinvonz@gmail.com> writes:
Show 5 quoted lines
> On Thu, Nov 29, 2012 at 2:00 PM, Martin von Zweigbergk > <martinvonz@gmail.com> wrote: >> Slightly off topic, but another difference (or somehow another aspect >> of the same difference?) that has tripped me up a few times is that >> "git checkout $rev ." only affects added and modified files...
"checkout $commit pathspec" has always been about checking out the contents stored in the paths that match the pathspec from the named commit to the index and also o the working tree. "checkout pathspec" is similar, but the stuff comes out of the index.
When pathspec is "dir/", it does not match the directory whose name is "dir". The pathspec matches the paths that store blobs under that directory.
In other words, "checkout dir/" (or "checkout HEAD~4 dir/) has never been about "please remove everything in dir/, and then check out everything in dir/ from the index (or from HEAD~4)". The "please remove everything in dir/" part is not the job of "checkout"; of course, you can do it as a separate step (e.g. "rm -fr dir/").