1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-30 13:57:54 +01:00

[PATCH] Extend "git reset" to take a reset point

This was triggered by a query by Sam Ravnborg, and extends "git reset" to
reset the index and the .git/HEAD pointer to an arbitrarily named point.

For example

	git reset HEAD^

will just reset the current HEAD to its own parent - leaving the working
directory untouched, but effectively un-doing the top-most commit. You
might want to do this if you realize after you committed that you made a
mistake that you want to fix up: reset your HEAD back to its previous
state, fix up the working directory and re-do the commit.

If you want to totally un-do the commit (and reset your working directory
to that point too), you'd first use "git reset HEAD^" to reset to the
parent, and then do a "git checkout -f" to reset the working directory
state to that point in time too.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Linus Torvalds 2005-08-06 18:01:03 -07:00 committed by Junio C Hamano
parent d3af621b14
commit bfe19f876c

View file

@ -1,5 +1,7 @@
#!/bin/sh #!/bin/sh
. git-sh-setup-script || die "Not a git archive" . git-sh-setup-script || die "Not a git archive"
git-read-tree --reset HEAD rev=$(git-rev-parse --revs-only --verify --default HEAD "$@") || exit
rev=$(git-rev-parse --revs-only --verify $rev^0) || exit
git-read-tree --reset "$rev" && echo "$rev" > "$GIT_DIR/HEAD"
git-update-cache --refresh git-update-cache --refresh
rm -f "$GIT_DIR/MERGE_HEAD" rm -f "$GIT_DIR/MERGE_HEAD"