Signed-off-by: Felipe Contreras <[email protected]>
---
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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html