git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH try2 13/14] reset: allow --keep with --stage

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Oct 12, 2013, 07:04 UTC
Message-ID
<1381561488-20294-11-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1381561488-20294-1-git-send-email-felipe.contreras@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@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
Previous: Felipe ContrerasNext: Felipe Contreras
Message 17 of 21 in “completion: update 'git reset' new stage options”
  1. 14/14 completion: update 'git reset' new stage optionsFelipe Contreras, Oct 12, 2013
  2. 04/14 grep: add --staged optionFelipe Contreras, Oct 12, 2013
  3. 07/14 stash: add --stage to pop and applyFelipe Contreras, Oct 12, 2013
  4. 00/14 Officially start moving to the term 'staging area'Felipe Contreras, Oct 12, 2013
  5. 10/14 apply: add --work, --no-work optionsFelipe Contreras, Oct 12, 2013
  6. 01/14 Add proper 'stage' commandFelipe Contreras, Oct 12, 2013
  7. Eric SunshineOct 14, 2013
  8. Felipe ContrerasOct 14, 2013
  9. 09/14 apply: add --stage optionFelipe Contreras, Oct 12, 2013
  10. Eric SunshineOct 13, 2013
  11. Felipe ContrerasOct 13, 2013
  12. Miles BaderOct 13, 2013
  13. Felipe ContrerasOct 13, 2013
  14. 03/14 diff: document --stagedFelipe Contreras, Oct 12, 2013
  15. 05/14 rm: add --staged optionFelipe Contreras, Oct 12, 2013
  16. 02/14 stage: add edit commandFelipe Contreras, Oct 12, 2013
  17. 13/14 reset: allow --keep with --stageFelipe Contreras, Oct 12, 2013
  18. 12/14 reset: add --stage and --work optionsFelipe Contreras, Oct 12, 2013
  19. 08/14 submodule: add --staged optionsFelipe Contreras, Oct 12, 2013
  20. 11/14 completion: update --staged optionsFelipe Contreras, Oct 12, 2013
  21. 06/14 stash: add --stage option to saveFelipe Contreras, Oct 12, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.