commit: allow a partial commit when a rebase pick becomes empty

For years, we disallowed partial commits during merges or cherry-picks.
In commit 430b75f720 (commit: give correct advice for empty commit
during a rebase, 2019-12-06) it was noted that the "cannot do a partial
commit during a cherry-pick" message was also printed when rebasing a
commit that became empty, and rather than drop the check in that case,
that commit opted to make the message print the actual operation that
was in progress.

Since a commit that has become empty comes without conflicts, a new
partial commit poses no problems; remove the error in that case.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
jch^2
Elijah Newren 2026-08-28 07:44:42 +00:00 committed by Junio C Hamano
parent ad3a039c31
commit 173c3a3d6e
2 changed files with 2 additions and 5 deletions

View File

@ -520,8 +520,6 @@ static const char *prepare_index(const char **argv, const char *prefix,
die(_("cannot do a partial commit during a merge."));
else if (is_from_cherry_pick(whence))
die(_("cannot do a partial commit during a cherry-pick."));
else if (is_from_rebase_empty(whence))
die(_("cannot do a partial commit during a rebase."));
}

if (list_paths(&partial, !current_head ? NULL : "HEAD", &pathspec))

View File

@ -1829,7 +1829,7 @@ test_expect_success 'post-commit hook is called' '
test_cmp expect actual
'

test_expect_success 'correct error message for partial commit after empty pick' '
test_expect_success 'partial commit is allowed when a rebase pick becomes empty' '
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
@ -1838,8 +1838,7 @@ test_expect_success 'correct error message for partial commit after empty pick'
test_must_fail git rebase -i A D
) &&
echo x >file1 &&
test_must_fail git commit file1 2>err &&
test_grep "cannot do a partial commit during a rebase." err
git commit file1
'

test_expect_success 'correct error message for commit --amend after empty pick' '