"Heba Waly via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > diff --git a/builtin/commit.c b/builtin/commit.c > index 2db2ad0de4..4439666465 100644 > --- a/builtin/commit.c > +++ b/builtin/commit.c > @@ -961,6 +961,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, > */ > if (!committable && whence != FROM_MERGE && !allow_empty && > !(amend && is_a_merge(current_head))) { > + s->hints = advice_status_hints; > s->display_comment_prefix = old_display_comment_prefix; > run_status(stdout, index_file, prefix, 0, s); > if (amend) It almost tempts me to say why this is not done inside run_status(), which has other callers, but I think the answer is because we do not want these hints when we are actually committing (iow, the ongoing commit must be aborted before the user can actually say "git add" etc. that are suggested). So the change makes sense to me. Will queue. > diff --git a/t/t7500-commit-template-squash-signoff.sh b/t/t7500-commit-template-squash-signoff.sh > index 46a5cd4b73..3d76e8ebbd 100755 > --- a/t/t7500-commit-template-squash-signoff.sh > +++ b/t/t7500-commit-template-squash-signoff.sh > @@ -382,4 +382,13 @@ test_expect_success 'check commit with unstaged rename and copy' ' > ) > ' > > +test_expect_success 'commit without staging files fails and displays hints' ' > + echo "initial" >>file && > + git add file && > + git commit -m initial && > + echo "changes" >>file && > + test_must_fail git commit -m initial >actual && > + test_i18ngrep "no changes added to commit (use \"git add\" and/or \"git commit -a\")" actual > +' > + > test_done