diff options
-rw-r--r-- | builtin-commit.c | 5 | ||||
-rwxr-xr-x | t/t7501-commit.sh | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/builtin-commit.c b/builtin-commit.c index f4c73442c..b34fb0374 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -188,6 +188,9 @@ static int list_paths(struct string_list *list, const char *with_tree, int i; char *m; + if (!pattern) + return 0; + for (i = 0; pattern[i]; i++) ; m = xcalloc(1, i); @@ -324,7 +327,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix, int * hooks on the real index, and create commit from the_index. * We still need to refresh the index here. */ - if (!pathspec || !*pathspec) { + if (!only && (!pathspec || !*pathspec)) { fd = hold_locked_index(&index_lock, 1); refresh_cache_or_die(refresh_flags); if (write_cache(fd, active_cache, active_nr) || diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh index 7940901d4..e1181f097 100755 --- a/t/t7501-commit.sh +++ b/t/t7501-commit.sh @@ -88,6 +88,16 @@ test_expect_success \ "amend commit" \ "EDITOR=./editor git commit --amend" +test_expect_success 'amend --only ignores staged contents' ' + cp file file.expect && + echo changed >file && + git add file && + git commit --no-edit --amend --only && + git cat-file blob HEAD:file >file.actual && + test_cmp file.expect file.actual && + git diff --exit-code +' + test_expect_success \ "passing -m and -F" \ "echo 'enough with the bongos' >file && \ |