'\" t
.\"     Title: git-reset
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
.\"      Date: 2025-10-02
.\"    Manual: Git Manual
.\"    Source: Git 2.51.0.414.g5099f64a82
.\"  Language: English
.\"
.TH "GIT\-RESET" "1" "2025-10-02" "Git 2\&.51\&.0\&.414\&.g5099f6" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-reset \- Reset current HEAD to the specified state
.SH "SYNOPSIS"
.sp
.nf
\fBgit\fR \fBreset\fR [\fB\-q\fR] [\fI<tree\-ish>\fR] [\fB\-\-\fR] \fI<pathspec>\fR\&...\:
\fBgit\fR \fBreset\fR [\fB\-q\fR] [\fB\-\-pathspec\-from\-file=\fR\fI<file>\fR [\fB\-\-pathspec\-file\-nul\fR]] [\fI<tree\-ish>\fR]
\fBgit\fR \fBreset\fR (\fB\-\-patch\fR | \fB\-p\fR) [\fI<tree\-ish>\fR] [\fB\-\-\fR] [\fI<pathspec>\fR\&...\:]
\fBgit\fR \fBreset\fR [\fB\-\-soft\fR | \fB\-\-mixed\fR [\fB\-N\fR] | \fB\-\-hard\fR | \fB\-\-merge\fR | \fB\-\-keep\fR] [\fB\-q\fR] [\fI<commit>\fR]
.fi
.SH "DESCRIPTION"
.sp
In the first three forms, copy entries from \fI<tree\-ish>\fR to the index\&. In the last form, set the current branch head (\fBHEAD\fR) to \fI<commit>\fR, optionally modifying index and working tree to match\&. The \fI<tree\-ish>\fR/\fI<commit>\fR defaults to \fBHEAD\fR in all forms\&.
.PP
\fBgit\fR \fBreset\fR [\fB\-q\fR] [\fI<tree\-ish>\fR] [\fB\-\-\fR] \fI<pathspec>\fR\&.\&.\&., \fBgit\fR \fBreset\fR [\fB\-q\fR] [\fB\-\-pathspec\-from\-file=\fR\fI<file>\fR [\fB\-\-pathspec\-file\-nul\fR]] [\fI<tree\-ish>\fR]
.RS 4
These forms reset the index entries for all paths that match the
\fI<pathspec>\fR
to their state at
\fI<tree\-ish>\fR\&. (It does not affect the working tree or the current branch\&.)
.sp
This means that
\fBgit\fR
\fBreset\fR
\fI<pathspec>\fR
is the opposite of
\fBgit\fR
\fBadd\fR
\fI<pathspec>\fR\&. This command is equivalent to
\fBgit\fR
\fBrestore\fR
[\fB\-\-source=\fR\fI<tree\-ish>\fR]
\fB\-\-staged\fR
\fI<pathspec>\fR\&.\&.\&.\&.
.sp
After running
\fBgit\fR
\fBreset\fR
\fI<pathspec>\fR
to update the index entry, you can use
\fBgit-restore\fR(1)
to check the contents out of the index to the working tree\&. Alternatively, using
\fBgit-restore\fR(1)
and specifying a commit with
\fB\-\-source\fR, you can copy the contents of a path out of a commit to the index and to the working tree in one go\&.
.RE
.PP
\fBgit\fR \fBreset\fR (\fB\-\-patch\fR | \fB\-p\fR) [\fI<tree\-ish>\fR] [\fB\-\-\fR] [\fI<pathspec>\fR\&.\&.\&.]
.RS 4
Interactively select hunks in the difference between the index and
\fI<tree\-ish>\fR
(defaults to
\fBHEAD\fR)\&. The chosen hunks are applied in reverse to the index\&.
.sp
This means that
\fBgit\fR
\fBreset\fR
\fB\-p\fR
is the opposite of
\fBgit\fR
\fBadd\fR
\fB\-p\fR, i\&.e\&. you can use it to selectively reset hunks\&. See the "Interactive Mode" section of
\fBgit-add\fR(1)
to learn how to operate the
\fB\-\-patch\fR
mode\&.
.RE
.PP
\fBgit\fR \fBreset\fR [\fI<mode>\fR] [\fI<commit>\fR]
.RS 4
This form resets the current branch head to
\fI<commit>\fR
and possibly updates the index (resetting it to the tree of
\fI<commit>\fR) and the working tree depending on
\fI<mode>\fR\&. Before the operation,
\fBORIG_HEAD\fR
is set to the tip of the current branch\&. If
\fI<mode>\fR
is omitted, defaults to
\fB\-\-mixed\fR\&. The
\fI<mode>\fR
must be one of the following:
.PP
\fB\-\-soft\fR
.RS 4
Does not touch the index file or the working tree at all (but resets the head to
\fI<commit>\fR, just like all modes do)\&. This leaves all your changed files "Changes to be committed", as
\fBgit\fR
\fBstatus\fR
would put it\&.
.RE
.PP
\fB\-\-mixed\fR
.RS 4
Resets the index but not the working tree (i\&.e\&., the changed files are preserved but not marked for commit) and reports what has not been updated\&. This is the default action\&.
.sp
If
\fB\-N\fR
is specified, removed paths are marked as intent\-to\-add (see
\fBgit-add\fR(1))\&.
.RE
.PP
\fB\-\-hard\fR
.RS 4
Resets the index and working tree\&. Any changes to tracked files in the working tree since
\fI<commit>\fR
are discarded\&. Any untracked files or directories in the way of writing any tracked files are simply deleted\&.
.RE
.PP
\fB\-\-merge\fR
.RS 4
Resets the index and updates the files in the working tree that are different between
\fI<commit>\fR
and
\fBHEAD\fR, but keeps those which are different between the index and working tree (i\&.e\&. which have changes which have not been added)\&. If a file that is different between
\fI<commit>\fR
and the index has unstaged changes, reset is aborted\&.
.sp
In other words,
\fB\-\-merge\fR
does something like a
\fBgit\fR
\fBread\-tree\fR
\fB\-u\fR
\fB\-m\fR
\fI<commit>\fR, but carries forward unmerged index entries\&.
.RE
.PP
\fB\-\-keep\fR
.RS 4
Resets index entries and updates files in the working tree that are different between
\fI<commit>\fR
and
\fBHEAD\fR\&. If a file that is different between
\fI<commit>\fR
and
\fBHEAD\fR
has local changes, reset is aborted\&.
.RE
.PP
\fB\-\-recurse\-submodules\fR, \fB\-\-no\-recurse\-submodules\fR
.RS 4
When the working tree is updated, using
\fB\-\-recurse\-submodules\fR
will also recursively reset the working tree of all active submodules according to the commit recorded in the superproject, also setting the submodules\*(Aq
\fBHEAD\fR
to be detached at that commit\&.
.RE
.RE
.sp
See "Reset, restore and revert" in \fBgit\fR(1) for the differences between the three commands\&.
.SH "OPTIONS"
.PP
\fB\-q\fR, \fB\-\-quiet\fR
.RS 4
Be quiet, only report errors\&.
.RE
.PP
\fB\-\-refresh\fR, \fB\-\-no\-refresh\fR
.RS 4
Refresh the index after a mixed reset\&. Enabled by default\&.
.RE
.PP
\fB\-\-pathspec\-from\-file=\fR\fI<file>\fR
.RS 4
Pathspec is passed in
\fI<file>\fR
instead of commandline args\&. If
\fI<file>\fR
is exactly
\fB\-\fR
then standard input is used\&. Pathspec elements are separated by
\fILF\fR
or
\fICR\fR/\fILF\fR\&. Pathspec elements can be quoted as explained for the configuration variable
\fBcore\&.quotePath\fR
(see
\fBgit-config\fR(1))\&. See also
\fB\-\-pathspec\-file\-nul\fR
and global
\fB\-\-literal\-pathspecs\fR\&.
.RE
.PP
\fB\-\-pathspec\-file\-nul\fR
.RS 4
Only meaningful with
\fB\-\-pathspec\-from\-file\fR\&. Pathspec elements are separated with
\fINUL\fR
character and all other characters are taken literally (including newlines and quotes)\&.
.RE
.PP
\fB\-U\fR\fI<n>\fR, \fB\-\-unified=\fR\fI<n>\fR
.RS 4
Generate diffs with
\fI<n>\fR
lines of context\&. Defaults to
\fBdiff\&.context\fR
or 3 if the config option is unset\&.
.RE
.PP
\fB\-\-inter\-hunk\-context=\fR\fI<n>\fR
.RS 4
Show the context between diff hunks, up to the specified
\fI<number>\fR
of lines, thereby fusing hunks that are close to each other\&. Defaults to
\fBdiff\&.interHunkContext\fR
or 0 if the config option is unset\&.
.RE
.PP
\fB\-\-\fR
.RS 4
Do not interpret any more arguments as options\&.
.RE
.PP
\fI<pathspec>\fR\&.\&.\&.
.RS 4
Limits the paths affected by the operation\&.
.sp
For more details, see the
\fIpathspec\fR
entry in
\fBgitglossary\fR(7)\&.
.RE
.SH "EXAMPLES"
.PP
Undo add
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ edit                                     \fB(1)\fR
$ git add frotz\&.c filfre\&.c
$ mailx                                    \fB(2)\fR
$ git reset                                \fB(3)\fR
$ git pull git://info\&.example\&.com/ nitfol  \fB(4)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
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
\fBgit\fR
\fBdiff\fR, because you plan to work on other files and changes with these files are distracting\&.
T}
\fB2.\fR\h'-2n':T{
Somebody asks you to pull, and the changes sound worthy of merging\&.
T}
\fB3.\fR\h'-2n':T{
However, you already dirtied the index (i\&.e\&. your index does not match the
\fBHEAD\fR
commit)\&. But you know the pull you are going to make does not affect
\fBfrotz\&.c\fR
or
\fBfilfre\&.c\fR, so you revert the index changes for these two files\&. Your changes in working tree remain there\&.
T}
\fB4.\fR\h'-2n':T{
Then you can pull and merge, leaving
\fBfrotz\&.c\fR
and
\fBfilfre\&.c\fR
changes still in the working tree\&.
T}
.TE
.RE
.PP
Undo a commit and redo
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ git commit \&.\&.\&.
$ git reset \-\-soft HEAD^      \fB(1)\fR
$ edit                        \fB(2)\fR
$ git commit \-a \-c ORIG_HEAD  \fB(3)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
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"\&.
T}
\fB2.\fR\h'-2n':T{
Make corrections to working tree files\&.
T}
\fB3.\fR\h'-2n':T{
"reset" copies the old head to \&.\fBgit/ORIG_HEAD\fR; redo the commit by starting with its log message\&. If you do not need to edit the message further, you can give
\fB\-C\fR
option instead\&.
.sp
See also the
\fB\-\-amend\fR
option to
\fBgit-commit\fR(1)\&.
T}
.TE
.RE
.PP
Undo a commit, making it a topic branch
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ git branch topic/wip          \fB(1)\fR
$ git reset \-\-hard HEAD~3       \fB(2)\fR
$ git switch topic/wip          \fB(3)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
You have made some commits, but realize they were premature to be in the
\fBmaster\fR
branch\&. You want to continue polishing them in a topic branch, so create
\fBtopic/wip\fR
branch off of the current
\fBHEAD\fR\&.
T}
\fB2.\fR\h'-2n':T{
Rewind the master branch to get rid of those three commits\&.
T}
\fB3.\fR\h'-2n':T{
Switch to
\fBtopic/wip\fR
branch and keep working\&.
T}
.TE
.RE
.PP
Undo commits permanently
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ git commit \&.\&.\&.
$ git reset \-\-hard HEAD~3   \fB(1)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
The last three commits (\fBHEAD\fR,
\fBHEAD^\fR, and
\fBHEAD~2\fR) were bad and you do not want to ever see them again\&. Do
\fBnot\fR
do this if you have already given these commits to somebody else\&. (See the "RECOVERING FROM UPSTREAM REBASE" section in
\fBgit-rebase\fR(1)
for the implications of doing so\&.)
T}
.TE
.RE
.PP
Undo a merge or pull
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ git pull                         \fB(1)\fR
Auto\-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result\&.
$ 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       \fB(4)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
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\&.
T}
\fB2.\fR\h'-2n':T{
"pull" has not made merge commit, so
\fBgit\fR
\fBreset\fR
\fB\-\-hard\fR
which is a synonym for
\fBgit\fR
\fBreset\fR
\fB\-\-hard\fR
\fBHEAD\fR
clears the mess from the index file and the working tree\&.
T}
\fB3.\fR\h'-2n':T{
Merge a topic branch into the current branch, which resulted in a fast\-forward\&.
T}
\fB4.\fR\h'-2n':T{
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
\fBORIG_HEAD\fR, 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\&.
T}
.TE
.RE
.PP
Undo a merge or pull inside a dirty working tree
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ git pull                         \fB(1)\fR
Auto\-merging nitfol
Merge made by recursive\&.
 nitfol                |   20 +++++\-\-\-\-
 \&.\&.\&.
$ git reset \-\-merge ORIG_HEAD      \fB(2)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
Even if you may have local modifications in your working tree, you can safely say
\fBgit\fR
\fBpull\fR
when you know that the change in the other branch does not overlap with them\&.
T}
\fB2.\fR\h'-2n':T{
After inspecting the result of the merge, you may find that the change in the other branch is unsatisfactory\&. Running
\fBgit\fR
\fBreset\fR
\fB\-\-hard\fR
\fBORIG_HEAD\fR
will let you go back to where you were, but it will discard your local changes, which you do not want\&.
\fBgit\fR
\fBreset\fR
\fB\-\-merge\fR
keeps your local changes\&.
T}
.TE
.RE
.PP
Interrupted workflow
.RS 4
Suppose you are interrupted by an urgent fix request while you are in the middle of a large change\&. The files in your working tree are not in any shape to be committed yet, but you need to get to the other branch for a quick bugfix\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git switch feature  ;# you were working in "feature" branch and
$ work work work      ;# got interrupted
$ git commit \-a \-m "snapshot WIP"                 \fB(1)\fR
$ git switch master
$ fix fix fix
$ git commit ;# commit with real log
$ git switch feature
$ git reset \-\-soft HEAD^ ;# go back to WIP state  \fB(2)\fR
$ git reset                                       \fB(3)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
This commit will get blown away so a throw\-away log message is OK\&.
T}
\fB2.\fR\h'-2n':T{
This removes the
\fIWIP\fR
commit from the commit history, and sets your working tree to the state just before you made that snapshot\&.
T}
\fB3.\fR\h'-2n':T{
At 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\&.
.sp
See also
\fBgit-stash\fR(1)\&.
T}
.TE
.RE
.PP
Reset a single file in the index
.RS 4
Suppose you have added a file to your index, but later decide you do not want to add it to your commit\&. You can remove the file from the index while keeping your changes with git reset\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git reset \-\- frotz\&.c                      \fB(1)\fR
$ git commit \-m "Commit files in index"     \fB(2)\fR
$ git add frotz\&.c                           \fB(3)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
This removes the file from the index while keeping it in the working directory\&.
T}
\fB2.\fR\h'-2n':T{
This commits all other changes in the index\&.
T}
\fB3.\fR\h'-2n':T{
Adds the file to the index again\&.
T}
.TE
.RE
.PP
Keep changes in working tree while discarding some previous commits
.RS 4
Suppose you are working on something and you commit it, and then you continue working a bit more, but now you think that what you have in your working tree should be in another branch that has nothing to do with what you committed previously\&. You can start a new branch and reset it while keeping the changes in your working tree\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git tag start
$ git switch \-c branch1
$ edit
$ git commit \&.\&.\&.                            \fB(1)\fR
$ edit
$ git switch \-c branch2                     \fB(2)\fR
$ git reset \-\-keep start                    \fB(3)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
This commits your first edits in
\fBbranch1\fR\&.
T}
\fB2.\fR\h'-2n':T{
In the ideal world, you could have realized that the earlier commit did not belong to the new topic when you created and switched to
\fBbranch2\fR
(i\&.e\&.
\fBgit\fR
\fBswitch\fR
\fB\-c\fR
\fBbranch2\fR
\fBstart\fR), but nobody is perfect\&.
T}
\fB3.\fR\h'-2n':T{
But you can use
\fBreset\fR
\fB\-\-keep\fR
to remove the unwanted commit after you switched to
\fBbranch2\fR\&.
T}
.TE
.RE
.PP
Split a commit apart into a sequence of commits
.RS 4
Suppose that you have created lots of logically separate changes and committed them together\&. Then, later you decide that it might be better to have each logical chunk associated with its own commit\&. You can use git reset to rewind history without changing the contents of your local files, and then successively use
\fBgit\fR
\fBadd\fR
\fB\-p\fR
to interactively select which hunks to include into each commit, using
\fBgit\fR
\fBcommit\fR
\fB\-c\fR
to pre\-populate the commit message\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git reset \-N HEAD^                        \fB(1)\fR
$ git add \-p                                \fB(2)\fR
$ git diff \-\-cached                         \fB(3)\fR
$ git commit \-c HEAD@{1}                    \fB(4)\fR
\&.\&.\&.                                         \fB(5)\fR
$ git add \&.\&.\&.                               \fB(6)\fR
$ git diff \-\-cached                         \fB(7)\fR
$ git commit \&.\&.\&.                            \fB(8)\fR
.fi
.if n \{\
.RE
.\}
.TS
tab(:);
r lw(\n(.lu*75u/100u).
\fB1.\fR\h'-2n':T{
First, reset the history back one commit so that we remove the original commit, but leave the working tree with all the changes\&. The
\fB\-N\fR
ensures that any new files added with
\fBHEAD\fR
are still marked so that
\fBgit\fR
\fBadd\fR
\fB\-p\fR
will find them\&.
T}
\fB2.\fR\h'-2n':T{
Next, we interactively select diff hunks to add using the
\fBgit\fR
\fBadd\fR
\fB\-p\fR
facility\&. This will ask you about each diff hunk in sequence and you can use simple commands such as "yes, include this", "No don\(cqt include this" or even the very powerful "edit" facility\&.
T}
\fB3.\fR\h'-2n':T{
Once satisfied with the hunks you want to include, you should verify what has been prepared for the first commit by using
\fBgit\fR
\fBdiff\fR
\fB\-\-cached\fR\&. This shows all the changes that have been moved into the index and are about to be committed\&.
T}
\fB4.\fR\h'-2n':T{
Next, commit the changes stored in the index\&. The
\fB\-c\fR
option specifies to pre\-populate the commit message from the original message that you started with in the first commit\&. This is helpful to avoid retyping it\&. The
\fBHEAD@\fR{1} is a special notation for the commit that
\fBHEAD\fR
used to be at prior to the original reset commit (1 change ago)\&. See
\fBgit-reflog\fR(1)
for more details\&. You may also use any other valid commit reference\&.
T}
\fB5.\fR\h'-2n':T{
You can repeat steps 2\-4 multiple times to break the original code into any number of commits\&.
T}
\fB6.\fR\h'-2n':T{
Now you\(cqve split out many of the changes into their own commits, and might no longer use the patch mode of
\fBgit\fR
\fBadd\fR, in order to select all remaining uncommitted changes\&.
T}
\fB7.\fR\h'-2n':T{
Once again, check to verify that you\(cqve included what you want to\&. You may also wish to verify that git diff doesn\(cqt show any remaining changes to be committed later\&.
T}
\fB8.\fR\h'-2n':T{
And finally create the final commit\&.
T}
.TE
.RE
.SH "DISCUSSION"
.sp
The tables below show what happens when running:
.sp
.if n \{\
.RS 4
.\}
.nf
git reset \-\-option target
.fi
.if n \{\
.RE
.\}
.sp
to reset the \fBHEAD\fR to another commit (\fBtarget\fR) with the different reset options depending on the state of the files\&.
.sp
In these tables, \fBA\fR, \fBB\fR, \fBC\fR and \fBD\fR are some different states of a file\&. For example, the first line of the first table means that if a file is in state \fBA\fR in the working tree, in state \fBB\fR in the index, in state \fBC\fR in \fBHEAD\fR and in state \fBD\fR in the target, then \fBgit\fR \fBreset\fR \fB\-\-soft\fR \fBtarget\fR will leave the file in the working tree in state \fBA\fR and in the index in state \fBB\fR\&. It resets (i\&.e\&. moves) the \fBHEAD\fR (i\&.e\&. the tip of the current branch, if you are on one) to \fBtarget\fR (which has the file in state \fBD\fR)\&.
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 A       B     C    D     \-\-soft   A       B     D
                          \-\-mixed  A       D     D
                          \-\-hard   D       D     D
                          \-\-merge (disallowed)
                          \-\-keep  (disallowed)
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 A       B     C    C     \-\-soft   A       B     C
                          \-\-mixed  A       C     C
                          \-\-hard   C       C     C
                          \-\-merge (disallowed)
                          \-\-keep   A       C     C
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 B       B     C    D     \-\-soft   B       B     D
                          \-\-mixed  B       D     D
                          \-\-hard   D       D     D
                          \-\-merge  D       D     D
                          \-\-keep  (disallowed)
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 B       B     C    C     \-\-soft   B       B     C
                          \-\-mixed  B       C     C
                          \-\-hard   C       C     C
                          \-\-merge  C       C     C
                          \-\-keep   B       C     C
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 B       C     C    D     \-\-soft   B       C     D
                          \-\-mixed  B       D     D
                          \-\-hard   D       D     D
                          \-\-merge (disallowed)
                          \-\-keep  (disallowed)
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 B       C     C    C     \-\-soft   B       C     C
                          \-\-mixed  B       C     C
                          \-\-hard   C       C     C
                          \-\-merge  B       C     C
                          \-\-keep   B       C     C
.fi
.if n \{\
.RE
.\}
.sp
\fBgit\fR \fBreset\fR \fB\-\-merge\fR is meant to be used when resetting out of a conflicted merge\&. Any mergy operation guarantees that the working tree file that is involved in the merge does not have a local change with respect to the index before it starts, and that it writes the result out to the working tree\&. So if we see some difference between the index and the target and also between the index and the working tree, then it means that we are not resetting out from a state that a mergy operation left after failing with a conflict\&. That is why we disallow \fB\-\-merge\fR option in this case\&.
.sp
\fBgit\fR \fBreset\fR \fB\-\-keep\fR is meant to be used when removing some of the last commits in the current branch while keeping changes in the working tree\&. If there could be conflicts between the changes in the commit we want to remove and the changes in the working tree we want to keep, the reset is disallowed\&. That\(cqs why it is disallowed if there are both changes between the working tree and \fBHEAD\fR, and between \fBHEAD\fR and the target\&. To be safe, it is also disallowed when there are unmerged entries\&.
.sp
The following tables show what happens when there are unmerged entries:
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 X       U     A    B     \-\-soft  (disallowed)
                          \-\-mixed  X       B     B
                          \-\-hard   B       B     B
                          \-\-merge  B       B     B
                          \-\-keep  (disallowed)
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
working index HEAD target         working index HEAD
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 X       U     A    A     \-\-soft  (disallowed)
                          \-\-mixed  X       A     A
                          \-\-hard   A       A     A
                          \-\-merge  A       A     A
                          \-\-keep  (disallowed)
.fi
.if n \{\
.RE
.\}
.sp
\fBX\fR means any state and \fBU\fR means an unmerged index\&.
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
