diff mbox series

[v3,08/16] restore: default to --source=HEAD when only --staged is specified

Message ID 20190425094600.15673-9-pclouds@gmail.com (mailing list archive)
State New, archived
Headers show
Series Add new command 'restore' | expand

Commit Message

Duy Nguyen April 25, 2019, 9:45 a.m. UTC
"git restore --staged" without --source does not make much sense since
by default we restore from the index.  Instead of copying the index to
itself, set the default source to HEAD in this case, yielding behavior
that matches "git reset -- <paths>".

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/checkout.c | 6 ++++++
 1 file changed, 6 insertions(+)
diff mbox series

Patch

diff --git a/builtin/checkout.c b/builtin/checkout.c
index 71e2589340..09a03f1ff8 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -1524,6 +1524,12 @@  static int checkout_main(int argc, const char **argv, const char *prefix,
 	}
 	if (opts->checkout_index < 0 || opts->checkout_worktree < 0)
 		BUG("these flags should be non-negative by now");
+	/*
+	 * convenient shortcut: "git restore --staged" equals
+	 * "git restore --staged --source HEAD"
+	 */
+	if (!opts->from_treeish && opts->checkout_index && !opts->checkout_worktree)
+		opts->from_treeish = "HEAD";
 
 	/*
 	 * From here on, new_branch will contain the branch to be checked out,