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

[PATCH v2 12/14] reset: add --stage and --work options

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Oct 14, 2013, 22:29 UTC
Message-ID
<1381789769-9893-12-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1381789769-9893-1-git-send-email-felipe.contreras@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 Documentation/git-reset.txt |  8 ++++++++
 builtin/reset.c             | 20 ++++++++++++++++++++
 2 files changed, 28 insertions(+)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index f445cb3..5cd75a8 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -11,6 +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>]
 
 DESCRIPTION
 -----------
@@ -81,6 +82,13 @@ but carries forward unmerged index entries.
 	different between <commit> and HEAD.
 	If a file that is different between <commit> and HEAD has local changes,
 	reset is aborted.
+
+--stage::
+	Reset the index, basically `--mixed`. `--no-stage` is the equivalent of
+	`--soft`.
+
+--work::
+	Resets the working tree, basically `--hard`.
 --
 
 If you want to undo a commit other than the latest on a branch,
diff --git a/builtin/reset.c b/builtin/reset.c
index afa6e02..fbc1abc 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -23,6 +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 [-q] <tree-ish> [--] <paths>..."),
 	N_("git reset --patch [<tree-ish>] [--] [<paths>...]"),
 	NULL
@@ -243,6 +244,7 @@ static int update_refs(const char *rev, const unsigned char *sha1)
 int cmd_reset(int argc, const char **argv, const char *prefix)
 {
 	int reset_type = NONE, update_ref_status = 0, quiet = 0;
+	int stage = -1, working_tree = -1;
 	int patch_mode = 0, unborn;
 	const char *rev;
 	unsigned char sha1[20];
@@ -258,6 +260,8 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 				N_("reset HEAD, index and working tree"), MERGE),
 		OPT_SET_INT(0, "keep", &reset_type,
 				N_("reset HEAD but keep local changes"), KEEP),
+		OPT_BOOL(0, "stage", &stage, N_("reset index")),
+		OPT_BOOL(0, "work", &working_tree, N_("reset working tree")),
 		OPT_BOOLEAN('p', "patch", &patch_mode, N_("select hunks interactively")),
 		OPT_END()
 	};
@@ -290,6 +294,22 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 		hashcpy(sha1, tree->object.sha1);
 	}
 
+	if (stage >= 0 || working_tree >= 0) {
+		if (reset_type != NONE)
+			die(_("--{stage,work} are incompatible with --{hard,mixed,soft,merge}"));
+
+		if (working_tree == 1) {
+			if (stage == 0)
+				die(_("--no-stage doesn't make sense with --work"));
+			reset_type = HARD;
+		} else {
+			if (stage == 1)
+				reset_type = NONE;
+			else
+				reset_type = SOFT;
+		}
+	}
+
 	if (patch_mode) {
 		if (reset_type != NONE)
 			die(_("--patch is incompatible with --{hard,mixed,soft}"));
-- 
1.8.4-fc
Previous: Felipe ContrerasNext: Felipe Contreras
Message 27 of 30 in “completion: update 'git reset' new stage options”
  1. 14/14 completion: update 'git reset' new stage optionsFelipe Contreras, Oct 14, 2013
  2. 04/14 grep: add --staged optionFelipe Contreras, Oct 14, 2013
  3. 07/14 stash: add --stage to pop and applyFelipe Contreras, Oct 14, 2013
  4. 00/14 Officially start moving to the term 'staging area'Felipe Contreras, Oct 14, 2013
  5. Felipe ContrerasOct 14, 2013
  6. Junio C HamanoOct 17, 2013
  7. Felipe ContrerasOct 17, 2013
  8. Matthieu MoyOct 18, 2013
  9. John SzakmeisterOct 18, 2013
  10. Felipe ContrerasOct 18, 2013
  11. Max HornOct 18, 2013
  12. Karsten BleesOct 18, 2013
  13. Felipe ContrerasOct 19, 2013
  14. Philip OakleyOct 19, 2013
  15. Karsten BleesOct 24, 2013
  16. Andreas KreyOct 24, 2013
  17. Felipe ContrerasOct 24, 2013
  18. 10/14 apply: add --work, --no-work optionsFelipe Contreras, Oct 14, 2013
  19. 01/14 Add proper 'stage' commandFelipe Contreras, Oct 14, 2013
  20. Eric SunshineOct 14, 2013
  21. Felipe ContrerasOct 14, 2013
  22. 09/14 apply: add --stage optionFelipe Contreras, Oct 14, 2013
  23. 03/14 diff: document --stagedFelipe Contreras, Oct 14, 2013
  24. 05/14 rm: add --staged optionFelipe Contreras, Oct 14, 2013
  25. 02/14 stage: add edit commandFelipe Contreras, Oct 14, 2013
  26. 13/14 reset: allow --keep with --stageFelipe Contreras, Oct 14, 2013
  27. 12/14 reset: add --stage and --work optionsFelipe Contreras, Oct 14, 2013
  28. 08/14 submodule: add --staged optionsFelipe Contreras, Oct 14, 2013
  29. 11/14 completion: update --staged optionsFelipe Contreras, Oct 14, 2013
  30. 06/14 stash: add --stage option to saveFelipe Contreras, Oct 14, 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.