Junio C Hamano <gitster@xxxxxxxxx> wrote: > "George Spelvin" <linux@xxxxxxxxxxx> writes: >> "git checkout <tree-ish> <pathspec>" modifies the index? >> >> Damn, I've been using git for years and I never knew that. > > ... which would be an indication that the behaviour is most likely > the most natural one. I think it's more that often, staging a file to the index is pretty harmless, so it doesn't actually matter. Both of the commonest forms of commit ("git commit -a" and "git commit [-o] <paths>") aren't affected, and if I'm doing something trickier, I'll usually examine the status and make sure I've got it right. So I could have encountered it and put it down to fat-fingering on my part. >> But I just tested, and it does. Damn, now I have to figure out >> how to "leapfrog" a file from history into the working tree without >> overwriting the index; that's occasionally useful. > ... and indeed it is useful in some rare cases. Either > > git diff <tree-ish> <pathspec> | git apply -R > > or > > git checkout <tree-ish> <pathspec> && > git reset <pathspec> The former would work, and thanks for the idea, but for a single file I'd probably do one of git show <tree-ish>:<path> > <path> git cat-file blob <tree-ish>:<path> > <path> The checkout/reset wouldn't work in the case I'm thinking about, which is when I want to import a small piece (say, helper function that got deleted) from an old or other-branch version of a file. I.e. a partial revert or cherry-pick. If I had some current changes to merge with, I'd stage them, pull the *other* version into the tree, and use something like git-gui to add the hunk I want to the staged version. The whole point is that the staged state is important and I don't want it overwritten. There are other ways, of course: - Show or cat-file the other version into a temporary file and manually copy and paste. No need to stage anything. - Commit the current change, then add the additional changes and amend the commit. -- 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