Code

Simplify "git reset --hard"
authorLinus Torvalds <torvalds@osdl.org>
Sun, 14 May 2006 18:20:37 +0000 (11:20 -0700)
committerJunio C Hamano <junkio@cox.net>
Sun, 14 May 2006 23:48:33 +0000 (16:48 -0700)
commitc68998f5b5f43717a27da82fac08a76d6588bae7
tree03dd0da3187bf2852a3b14d9ccfdc78eab89992a
parent76b99b81613abea4cc16e45e1b11dbbec82a4b4d
Simplify "git reset --hard"

Now that the one-way merge strategy does the right thing wrt files that do
not exist in the result, just remove all the random crud we did in "git
reset" to do this all by hand.

Instead, just pass in "-u" to git-read-tree when we do a hard reset, and
depend on git-read-tree to update the working tree appropriately.

This basically means that git reset turns into

# Always update the HEAD ref
git update-ref HEAD "$rev"

case "--soft"
# do nothing to index/working tree
case "--hard"
# read index _and_ update working tree
git-read-tree --reset -u "$rev"
case "--mixed"
# update just index, report on working tree differences
git-read-tree --reset "$rev"
git-update-index --refresh

which is what it was always semantically doing, it just did it in a
rather strange way because it was written to not expect git-read-tree to
do anything to the working tree.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-reset.sh