On 2006-12-14, Junio C Hamano <junkio@xxxxxxx> wrote: > Sometimes it is asked on the list how to revert selected path in > the index from a tree, most often HEAD, without affecting the > files in the working tree. A similar operation that also > affects the working tree files has been available in the form of > "git checkout <tree> -- <paths>...". > > By definition --soft would never affect either the index nor the > working tree files, and --hard is the way to make the working > tree files as close to pristine, so this new option is available > only for the default --mixed case. > > Signed-off-by: Junio C Hamano <junkio@xxxxxxx> > --- > > * I haven't looked at Documentation/git-reset.txt recently. It > most likely needs not just addition to describe this new > format, but more a heavier rewrite similar to what we made to > git-commit documentation recently. > > git-reset.sh | 68 +++++++++++++++++++++++++++++++++++++++------------------ > 1 files changed, 46 insertions(+), 22 deletions(-) > > diff --git a/git-reset.sh b/git-reset.sh > index 03d2c3b..e95c252 100755 > --- a/git-reset.sh > +++ b/git-reset.sh > @@ -1,35 +1,59 @@ > #!/bin/sh > - > -USAGE='[--mixed | --soft | --hard] [<commit-ish>]' > +# > +# Copyright (c) 2005, 2006 Linus Torvalds and Junio C Hamano > +# > +USAGE='[--mixed | --soft | --hard] [<commit-ish>] [ [--] <paths>...]' > SUBDIRECTORY_OK=Yes > . git-sh-setup > > +update= rev= reset_type=--mixed > + > +while case $# in 0) break ;; esac > +do > + case "$1" in > + --mixed | --soft | --hard) > + reset_type="$1" > + ;; > + --) > + break > + ;; > + -*) > + usage > + ;; > + *) > + rev=$(git-rev-parse --verify "$1") || exit > + shift > + break > + ;; > + esac > + shift > +done > + > +: ${rev=HEAD} > +rev=$(git-rev-parse --verify $rev^0) || exit > + > +# Skip -- in "git reset HEAD -- foo" and "git reset -- foo". > +case "$1" in --) shift ;; esac > + > +# git reset --mixed tree [--] paths... can be used to > +# load chosen paths from the tree into the index without > +# affecting the working tree nor HEAD. > +if test $# != 0 > +then > + test "$reset_type" == "--mixed" || > + die "Cannot do partial $reset_type reset." > + git ls-tree -r --full-name $rev -- "$@" | > + git update-index --add --index-info || exit > + git update-index --refresh > + exit > +fi > + Why not make git-reset --hard <treeish> -- file aquivalent to git-checkout <treeish> -- file -Peter PS: Your patch didn't apply cleanly. And I couldn't find the blobs 03d2c3b..e95c252 even after pulling (pu, next, master) in my git repository - 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