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

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

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Apr 25, 2014, 18:12 UTC
Message-ID
<1398449567-16314-13-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1398449567-16314-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 a991344..c40987e 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
@@ -254,6 +255,7 @@ static int reset_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];
@@ -269,6 +271,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_BOOL('p', "patch", &patch_mode, N_("select hunks interactively")),
 		OPT_END()
 	};
@@ -301,6 +305,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.9.2+fc1.2.gfbaae8c
Previous: Felipe ContrerasNext: Felipe Contreras
Message 13 of 16 in “Officially start moving to the term 'staging area'”
  1. 00/14 Officially start moving to the term 'staging area'Felipe Contreras, Apr 25, 2014
  2. 01/14 Add proper 'stage' commandFelipe Contreras, Apr 25, 2014
  3. 02/14 stage: add edit commandFelipe Contreras, Apr 25, 2014
  4. 03/14 diff: document --stagedFelipe Contreras, Apr 25, 2014
  5. 04/14 grep: add --staged optionFelipe Contreras, Apr 25, 2014
  6. 05/14 rm: add --staged optionFelipe Contreras, Apr 25, 2014
  7. 06/14 stash: add --stage option to saveFelipe Contreras, Apr 25, 2014
  8. 07/14 stash: add --stage to pop and applyFelipe Contreras, Apr 25, 2014
  9. 08/14 submodule: add --staged optionsFelipe Contreras, Apr 25, 2014
  10. 09/14 apply: add --stage optionFelipe Contreras, Apr 25, 2014
  11. 10/14 apply: add --work, --no-work optionsFelipe Contreras, Apr 25, 2014
  12. 11/14 completion: update --staged optionsFelipe Contreras, Apr 25, 2014
  13. 12/14 reset: add --stage and --work optionsFelipe Contreras, Apr 25, 2014
  14. 13/14 reset: allow --keep with --stageFelipe Contreras, Apr 25, 2014
  15. 14/14 completion: update 'git reset' new stage optionsFelipe Contreras, Apr 25, 2014
  16. Hilco WijbengaApr 26, 2014

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.