On Thu, Nov 29, 2012 at 11:13 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > [...]These > two commands, "reset" and "checkout", share that the source we grab > the blobs out of only need to be a tree and does not have to be a > commit, and the only difference between them is where the blobs we > grabbed out of that tree go, either only to the index or to both the > index and the working tree. 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 (in $rev compared to HEAD), but "git reset $rev ." would also delete deleted files from the index. I suppose this is also a partial answer to your question in another message: > What does it even mean, even when you are on an existing commit, to > hard reset partially? > > Perhaps you looking for "git checkout $tree -- $path"? A more direct answer would be that I would expect "git reset --hard $rev -- ." to behave like "git reset --hard $rev", except that it wouldn't update HEAD. It seems to me that that would be similar to how "git reset $rev -- ." behaves like "git reset $rev", except that it doesn't update HEAD. But reset and checkout with and without paths still confuse me after years of using git, so I wouldn't be surprised if I'm not making any sense. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html