diff options
-rw-r--r-- | builtin/reset.c | 7 | ||||
-rwxr-xr-x | t/t7102-reset.sh | 11 |
2 files changed, 15 insertions, 3 deletions
diff --git a/builtin/reset.c b/builtin/reset.c index 4fd1c6c51d..f4e087596b 100644 --- a/builtin/reset.c +++ b/builtin/reset.c @@ -333,7 +333,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix) if (reset_type == NONE) reset_type = MIXED; /* by default */ - if (reset_type != SOFT && reset_type != MIXED) + if (reset_type != SOFT && (reset_type != MIXED || get_git_work_tree())) setup_work_tree(); if (reset_type == MIXED && is_bare_repository()) @@ -356,8 +356,9 @@ int cmd_reset(int argc, const char **argv, const char *prefix) int flags = quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN; if (read_from_tree(&pathspec, sha1, intent_to_add)) return 1; - refresh_index(&the_index, flags, NULL, NULL, - _("Unstaged changes after reset:")); + if (get_git_work_tree()) + refresh_index(&the_index, flags, NULL, NULL, + _("Unstaged changes after reset:")); } else { int err = reset_index(sha1, reset_type, quiet); if (reset_type == KEEP && !err) diff --git a/t/t7102-reset.sh b/t/t7102-reset.sh index bc0846f435..450529404c 100755 --- a/t/t7102-reset.sh +++ b/t/t7102-reset.sh @@ -550,4 +550,15 @@ test_expect_success 'reset -N keeps removed files as intent-to-add' ' test_cmp expect actual ' +test_expect_success 'reset --mixed sets up work tree' ' + git init mixed_worktree && + ( + cd mixed_worktree && + test_commit dummy + ) && + : >expect && + git --git-dir=mixed_worktree/.git --work-tree=mixed_worktree reset >actual && + test_cmp expect actual +' + test_done |