diff options
author | Linus Torvalds <torvalds@osdl.org> | 2005-08-06 18:01:03 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-08-06 20:44:20 -0700 |
commit | bfe19f876cb20bea606e1a698030c017f31965c1 (patch) | |
tree | e69d7b2fa8b592c95dc77861fb3e83e85c19172e | |
parent | d3af621b147bb90a31fdc3b55e07853f45deb658 (diff) | |
download | git-bfe19f876cb20bea606e1a698030c017f31965c1.tar.gz |
[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>
-rwxr-xr-x | git-reset-script | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/git-reset-script b/git-reset-script index 0c02aa6423..b6476edc30 100755 --- a/git-reset-script +++ b/git-reset-script @@ -1,5 +1,7 @@ #!/bin/sh . 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 rm -f "$GIT_DIR/MERGE_HEAD" |