diff options
Diffstat (limited to 'Documentation/git-reset.adoc')
| -rw-r--r-- | Documentation/git-reset.adoc | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/Documentation/git-reset.adoc b/Documentation/git-reset.adoc index 876187dc83..fa4bb2b551 100644 --- a/Documentation/git-reset.adoc +++ b/Documentation/git-reset.adoc @@ -24,42 +24,44 @@ However, when you specify files or directories or pass `--patch`, files without updating HEAD. `git reset [<mode>] [<commit>]`:: - This form resets the current branch head to _<commit>_ and - possibly updates the index (resetting it to the tree of _<commit>_) and - the working tree depending on _<mode>_. Before the operation, `ORIG_HEAD` - is set to the tip of the current branch. If _<mode>_ is omitted, - defaults to `--mixed`. The _<mode>_ must be one of the following: + Set the current branch head (`HEAD`) to point at _<commit>_. + Depending on _<mode>_, also update the working directory and/or index + to match the contents of _<commit>_. + _<commit>_ defaults to `HEAD`. + Before the operation, `ORIG_HEAD` is set to the tip of the current branch. ++ +The _<mode>_ must be one of the following (default `--mixed`): + --- -`--soft`:: - Does not touch the index file or the working tree at all (but - resets the head to _<commit>_, just like all modes do). This leaves - all your changed files "Changes to be committed", as `git status` - would put it. +-- `--mixed`:: - 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. + Leaves your working directory unchanged. + Updates the index to match the new HEAD, so nothing will be staged. + If `-N` is specified, removed paths are marked as intent-to-add (see linkgit:git-add[1]). +`--soft`:: + Leaves your working directory unchanged. The index is left unchanged, + so everything in your current commit will be staged. + For example, if you have no staged changes, you can use + `git reset --soft HEAD~5; git commit` + to combine the last 5 commits into 1 commit. + `--hard`:: - Resets the index and working tree. Any changes to tracked files in the - working tree since _<commit>_ are discarded. Any untracked files or - directories in the way of writing any tracked files are simply deleted. + Overwrites all files and directories with the version from _<commit>_, + and may overwrite untracked files. + Updates the index to match the new HEAD, so nothing will be staged. `--merge`:: + Mainly exists for backwards compatibility: `git merge --abort` is the + usual way to abort a merge. See linkgit:git-merge[1] for the differences. Resets the index and updates the files in the working tree that are different between _<commit>_ and `HEAD`, 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 _<commit>_ and the index has unstaged changes, reset is aborted. -+ -In other words, `--merge` does something like a `git read-tree -u -m <commit>`, -but carries forward unmerged index entries. `--keep`:: Resets index entries and updates files in the working tree that are |
