.nf
$ git commit \&.\&.\&.
-$ git reset \-\-soft HEAD^
-$ edit
-$ git commit \-a \-c ORIG_HEAD
-
- This is most often done when you remembered what you
-just committed is incomplete, or you misspelled your commit
-message, or both\&. Leaves working tree as it was before "reset"\&.
- make corrections to working tree files\&.
- "reset" copies the old head to \&.git/ORIG_HEAD; redo the
-commit by starting with its log message\&. If you do not need to
-edit the message further, you can give \-C option instead\&.
+$ git reset \-\-soft HEAD^ \fB(1)\fR
+$ edit \fB(2)\fR
+$ git commit \-a \-c ORIG_HEAD \fB(3)\fR
.fi
+.sp
+\fB1. \fRThis is most often done when you remembered what you just committed is incomplete, or you misspelled your commit message, or both\&. Leaves working tree as it was before "reset"\&.
+.br
+\fB2. \fRmake corrections to working tree files\&.
+.br
+\fB3. \fR"reset" copies the old head to \&.git/ORIG_HEAD; redo the commit by starting with its log message\&. If you do not need to edit the message further, you can give \-C option instead\&.
+.br
+
.TP
Undo commits permanently
.nf
$ git commit \&.\&.\&.
-$ git reset \-\-hard HEAD~3
-
- The last three commits (HEAD, HEAD^, and HEAD~2) were bad
-and you do not want to ever see them again\&. Do *not* do this if
-you have already given these commits to somebody else\&.
+$ git reset \-\-hard HEAD~3 \fB(1)\fR
.fi
+.sp
+\fB1. \fRThe last three commits (HEAD, HEAD^, and HEAD~2) were bad and you do not want to ever see them again\&. Do \fInot\fR do this if you have already given these commits to somebody else\&.
+.br
+
.TP
Undo a commit, making it a topic branch
.nf
-$ git branch topic/wip
-$ git reset \-\-hard HEAD~3
-$ git checkout topic/wip
-
- You have made some commits, but realize they were premature
-to be in the "master" branch\&. You want to continue polishing
-them in a topic branch, so create "topic/wip" branch off of the
-current HEAD\&.
- Rewind the master branch to get rid of those three commits\&.
- Switch to "topic/wip" branch and keep working\&.
+$ git branch topic/wip \fB(1)\fR
+$ git reset \-\-hard HEAD~3 \fB(2)\fR
+$ git checkout topic/wip \fB(3)\fR
.fi
+.sp
+\fB1. \fRYou have made some commits, but realize they were premature to be in the "master" branch\&. You want to continue polishing them in a topic branch, so create "topic/wip" branch off of the current HEAD\&.
+.br
+\fB2. \fRRewind the master branch to get rid of those three commits\&.
+.br
+\fB3. \fRSwitch to "topic/wip" branch and keep working\&.
+.br
+
.TP
Undo update\-index
.nf
-$ edit
+$ edit \fB(1)\fR
$ git\-update\-index frotz\&.c filfre\&.c
-$ mailx
-$ git reset
-$ git pull git://info\&.example\&.com/ nitfol
-
- you are happily working on something, and find the changes
-in these files are in good order\&. You do not want to see them
-when you run "git diff", because you plan to work on other files
-and changes with these files are distracting\&.
- somebody asks you to pull, and the changes sounds worthy of merging\&.
- however, you already dirtied the index (i\&.e\&. your index does
-not match the HEAD commit)\&. But you know the pull you are going
-to make does not affect frotz\&.c nor filfre\&.c, so you revert the
-index changes for these two files\&. Your changes in working tree
-remain there\&.
- then you can pull and merge, leaving frotz\&.c and filfre\&.c
-changes still in the working tree\&.
+$ mailx \fB(2)\fR
+$ git reset \fB(3)\fR
+$ git pull git://info\&.example\&.com/ nitfol \fB(4)\fR
.fi
+.sp
+\fB1. \fRyou are happily working on something, and find the changes in these files are in good order\&. You do not want to see them when you run "git diff", because you plan to work on other files and changes with these files are distracting\&.
+.br
+\fB2. \fRsomebody asks you to pull, and the changes sounds worthy of merging\&.
+.br
+\fB3. \fRhowever, you already dirtied the index (i\&.e\&. your index does not match the HEAD commit)\&. But you know the pull you are going to make does not affect frotz\&.c nor filfre\&.c, so you revert the index changes for these two files\&. Your changes in working tree remain there\&.
+.br
+\fB4. \fRthen you can pull and merge, leaving frotz\&.c and filfre\&.c changes still in the working tree\&.
+.br
+
.TP
Undo a merge or pull
.nf
-$ git pull
+$ git pull \fB(1)\fR
Trying really trivial in\-index merge\&.\&.\&.
fatal: Merge requires file\-level merging
Nope\&.
Auto\-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed/prevented; fix up by hand
-$ git reset \-\-hard
-
- try to update from the upstream resulted in a lot of
-conflicts; you were not ready to spend a lot of time merging
-right now, so you decide to do that later\&.
- "pull" has not made merge commit, so "git reset \-\-hard"
-which is a synonym for "git reset \-\-hard HEAD" clears the mess
-from the index file and the working tree\&.
-
-$ git pull \&. topic/branch
+$ git reset \-\-hard \fB(2)\fR
+$ git pull \&. topic/branch \fB(3)\fR
Updating from 41223\&.\&.\&. to 13134\&.\&.\&.
Fast forward
-$ git reset \-\-hard ORIG_HEAD
-
- merge a topic branch into the current branch, which resulted
-in a fast forward\&.
- but you decided that the topic branch is not ready for public
-consumption yet\&. "pull" or "merge" always leaves the original
-tip of the current branch in ORIG_HEAD, so resetting hard to it
-brings your index file and the working tree back to that state,
-and resets the tip of the branch to that commit\&.
+$ git reset \-\-hard ORIG_HEAD \fB(4)\fR
.fi
+.sp
+\fB1. \fRtry to update from the upstream resulted in a lot of conflicts; you were not ready to spend a lot of time merging right now, so you decide to do that later\&.
+.br
+\fB2. \fR"pull" has not made merge commit, so "git reset \-\-hard" which is a synonym for "git reset \-\-hard HEAD" clears the mess from the index file and the working tree\&.
+.br
+\fB3. \fRmerge a topic branch into the current branch, which resulted in a fast forward\&.
+.br
+\fB4. \fRbut you decided that the topic branch is not ready for public consumption yet\&. "pull" or "merge" always leaves the original tip of the current branch in ORIG_HEAD, so resetting hard to it brings your index file and the working tree back to that state, and resets the tip of the branch to that commit\&.
+.br
+
.TP
Interrupted workflow
.nf
$ git checkout feature ;# you were working in "feature" branch and
$ work work work ;# got interrupted
-$ git commit \-a \-m 'snapshot WIP'
+$ git commit \-a \-m 'snapshot WIP' \fB(1)\fR
$ git checkout master
$ fix fix fix
$ git commit ;# commit with real log
$ git checkout feature
-$ git reset \-\-soft HEAD^ ;# go back to WIP state
-$ git reset
-
- This commit will get blown away so a throw\-away log message is OK\&.
- This removes the 'WIP' commit from the commit history, and sets
- your working tree to the state just before you made that snapshot\&.
- After , the index file still has all the WIP changes you
- committed in \&. This sets it to the last commit you were
- basing the WIP changes on\&.
+$ git reset \-\-soft HEAD^ ;# go back to WIP state \fB(2)\fR
+$ git reset \fB(3)\fR
.fi
+.sp
+\fB1. \fRThis commit will get blown away so a throw\-away log message is OK\&.
+.br
+\fB2. \fRThis removes the \fIWIP\fR commit from the commit history, and sets your working tree to the state just before you made that snapshot\&.
+.br
+\fB3. \fRAt this point the index file still has all the WIP changes you committed as \fIsnapshot WIP\fR\&. This updates the index to show your WIP files as uncommitted\&.
+.br
+
.SH "AUTHOR"