Signed-off-by: Felipe Contreras <felipe.contre...@gmail.com>
---
 Documentation/git-reset.txt |  2 +-
 builtin/reset.c             | 13 ++++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 5cd75a8..a1419c9 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -11,7 +11,7 @@ SYNOPSIS
 'git reset' [-q] [<tree-ish>] [--] <paths>...
 'git reset' (--patch | -p) [<tree-ish>] [--] [<paths>...]
 'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
-'git reset' [--stage | --work] [-q] [<commit>]
+'git reset' [--stage | --work | --keep] [-q] [<commit>]
 
 DESCRIPTION
 -----------
diff --git a/builtin/reset.c b/builtin/reset.c
index fbc1abc..dde03a7 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -23,7 +23,7 @@
 
 static const char * const git_reset_usage[] = {
        N_("git reset [--mixed | --soft | --hard | --merge | --keep] [-q] 
[<commit>]"),
-       N_("git reset [--stage | --work] [-q] [<commit>]"),
+       N_("git reset [--stage | --work | --keep] [-q] [<commit>]"),
        N_("git reset [-q] <tree-ish> [--] <paths>..."),
        N_("git reset --patch [<tree-ish>] [--] [<paths>...]"),
        NULL
@@ -295,8 +295,15 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
        }
 
        if (stage >= 0 || working_tree >= 0) {
-               if (reset_type != NONE)
+               int keep = 0;
+
+               if (reset_type == KEEP) {
+                       if (working_tree == 1)
+                               die(_("--keep is incompatible with --work"));
+                       keep = 1;
+               } else if (reset_type != NONE) {
                        die(_("--{stage,work} are incompatible with 
--{hard,mixed,soft,merge}"));
+               }
 
                if (working_tree == 1) {
                        if (stage == 0)
@@ -304,7 +311,7 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
                        reset_type = HARD;
                } else {
                        if (stage == 1)
-                               reset_type = NONE;
+                               reset_type = keep ? KEEP : NONE;
                        else
                                reset_type = SOFT;
                }
-- 
1.8.4-fc

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to