summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin-commit.c5
-rwxr-xr-xt/t7501-commit.sh10
2 files changed, 14 insertions, 1 deletions
diff --git a/builtin-commit.c b/builtin-commit.c
index f4c73442cf..b34fb03742 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 7940901d47..e1181f0979 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 && \