path: root/git-reset-script
diff options
authorLinus Torvalds <>2005-08-07 01:01:03 (GMT)
committerJunio C Hamano <>2005-08-07 03:44:20 (GMT)
commitbfe19f876cb20bea606e1a698030c017f31965c1 (patch)
treee69d7b2fa8b592c95dc77861fb3e83e85c19172e /git-reset-script
parentd3af621b147bb90a31fdc3b55e07853f45deb658 (diff)
[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 <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'git-reset-script')
1 files changed, 3 insertions, 1 deletions
diff --git a/git-reset-script b/git-reset-script
index 0c02aa6..b6476ed 100755
--- a/git-reset-script
+++ b/git-reset-script
@@ -1,5 +1,7 @@
. 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