{"thread":{"id":"66473","subject":"[PATCH] status: suggest `git merge --continue`, not `git commit`","startedAt":"2026-10-06T13:02:42Z","lastAt":"2026-10-06T18:20:56Z","messageCount":3,"participants":["Julia Evans via GitGitGadget","Phillip Wood","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"554280","messageId":"pull.2249.git.1791291762665.gitgitgadget@gmail.com","threadId":"66473","inReplyTo":null,"subject":"[PATCH] status: suggest `git merge --continue`, not `git commit`","fromName":"Julia Evans via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2026-10-06T13:02:42Z","receivedAt":"2026-10-06T13:02:42Z","isPatch":true,"sender":{"key":"julia@jvns.ca","avatar":"https://avatars.githubusercontent.com/u/817739?v=4"},"body":"From: Julia Evans <julia@jvns.ca>\n\nDuring a merge conflict, we suggest using --continue to continue the\nmerge for rebase, revert, and cherry-pick.\n\nChange the `git merge` advice to be consistent.\nCommit 367ff694281ce569edd8f6e444fc770f92f5d215 says that\n`git merge --continue` is intended to be a synonym for `git commit`,\nand the `git merge` man page already suggests to use\n`git merge --continue`.\n\nSigned-off-by: Julia Evans <julia@jvns.ca>\n---\n    status: suggest git merge --continue, not git commit\n    \n    We discussed making this consistent in another thread:\n    https://lore.kernel.org/git/623cdf71-8076-4967-aff1-3ebeb57d1e3a@app.fastmail.com/T/#m4bdcb555cbdff4132fb1a678594f26b598e0b38f\n    \n    From some research:\n    \n     * git merge --continue was introduced in 367ff694281c in Dec 2016. It\n       says that git merge --continue is intended to be a synonym for git\n       commit. (thread here:\n       https://lore.kernel.org/git/20161214083757.26412-1-judge.packham@gmail.com/)\n     * This line of the advice was last touched in July 2016, before git\n       merge --continue was introduced.\n    \n    So I don't see any obvious reason not to change the advice.\n    \n    Translations will need to be updated, I still don't know how that\n    process works. Updating the translations should be straightforward since\n    it's just a change in the command.\n\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-2249%2Fjvns%2Fadvice-merge-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2249/jvns/advice-merge-v1\nPull-Request: https://github.com/gitgitgadget/git/pull/2249\n\n t/t7060-wtstatus.sh    | 8 ++++----\n t/t7512-status-help.sh | 4 ++--\n wt-status.c            | 4 ++--\n 3 files changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/t/t7060-wtstatus.sh b/t/t7060-wtstatus.sh\nindex 942ddbbf0e..a9b435b5e3 100755\n--- a/t/t7060-wtstatus.sh\n+++ b/t/t7060-wtstatus.sh\n@@ -37,7 +37,7 @@ test_expect_success 'M/D conflict does not segfault' '\n \tcat >expect <<EOF &&\n On branch side\n You have unmerged paths.\n-  (fix conflicts and run \"git commit\")\n+  (fix conflicts and run \"git merge --continue\")\n   (use \"git merge --abort\" to abort the merge)\n \n Unmerged paths:\n@@ -141,7 +141,7 @@ test_expect_success 'status when conflicts with add and rm advice (deleted by th\n \tcat >expected <<\\EOF &&\n On branch main\n You have unmerged paths.\n-  (fix conflicts and run \"git commit\")\n+  (fix conflicts and run \"git merge --continue\")\n   (use \"git merge --abort\" to abort the merge)\n \n Unmerged paths:\n@@ -174,7 +174,7 @@ test_expect_success 'status when conflicts with add and rm advice (both deleted)\n \tcat >expected <<\\EOF &&\n On branch conflict_second\n You have unmerged paths.\n-  (fix conflicts and run \"git commit\")\n+  (fix conflicts and run \"git merge --continue\")\n   (use \"git merge --abort\" to abort the merge)\n \n Unmerged paths:\n@@ -198,7 +198,7 @@ test_expect_success 'status when conflicts with only rm advice (both deleted)' '\n \tcat >expected <<\\EOF &&\n On branch conflict_second\n You have unmerged paths.\n-  (fix conflicts and run \"git commit\")\n+  (fix conflicts and run \"git merge --continue\")\n   (use \"git merge --abort\" to abort the merge)\n \n Changes to be committed:\ndiff --git a/t/t7512-status-help.sh b/t/t7512-status-help.sh\nindex aca4b6d332..776a0dd5b8 100755\n--- a/t/t7512-status-help.sh\n+++ b/t/t7512-status-help.sh\n@@ -31,7 +31,7 @@ test_expect_success 'status when conflicts unresolved' '\n \tcat >expected <<\\EOF &&\n On branch conflicts\n You have unmerged paths.\n-  (fix conflicts and run \"git commit\")\n+  (fix conflicts and run \"git merge --continue\")\n   (use \"git merge --abort\" to abort the merge)\n \n Unmerged paths:\n@@ -53,7 +53,7 @@ test_expect_success 'status when conflicts resolved before commit' '\n \tcat >expected <<\\EOF &&\n On branch conflicts\n All conflicts fixed but you are still merging.\n-  (use \"git commit\" to conclude merge)\n+  (use \"git merge --continue\" to conclude merge)\n \n Changes to be committed:\n \tmodified:   main.txt\ndiff --git a/wt-status.c b/wt-status.c\nindex 57772c7501..f7b0dc29d5 100644\n--- a/wt-status.c\n+++ b/wt-status.c\n@@ -1273,7 +1273,7 @@ static void show_merge_in_progress(struct wt_status *s,\n \t\tstatus_printf_ln(s, color, _(\"You have unmerged paths.\"));\n \t\tif (s->hints) {\n \t\t\tstatus_printf_ln(s, color,\n-\t\t\t\t\t _(\"  (fix conflicts and run \\\"git commit\\\")\"));\n+\t\t\t\t\t _(\"  (fix conflicts and run \\\"git merge --continue\\\")\"));\n \t\t\tstatus_printf_ln(s, color,\n \t\t\t\t\t _(\"  (use \\\"git merge --abort\\\" to abort the merge)\"));\n \t\t}\n@@ -1282,7 +1282,7 @@ static void show_merge_in_progress(struct wt_status *s,\n \t\t\t_(\"All conflicts fixed but you are still merging.\"));\n \t\tif (s->hints)\n \t\t\tstatus_printf_ln(s, color,\n-\t\t\t\t_(\"  (use \\\"git commit\\\" to conclude merge)\"));\n+\t\t\t\t_(\"  (use \\\"git merge --continue\\\" to conclude merge)\"));\n \t}\n \twt_longstatus_print_trailer(s);\n }\n\nbase-commit: 5a7d1e8045ce66c908f62598e26cbb8df7b39a90\n-- \ngitgitgadget\n\n"},{"id":"554292","messageId":"3a716db0-4c40-4407-9237-f83c0dd37ad8@gmail.com","threadId":"66473","inReplyTo":"pull.2249.git.1791291762665.gitgitgadget@gmail.com","subject":"Re: [PATCH] status: suggest `git merge --continue`, not `git commit`","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2026-10-06T15:31:12Z","receivedAt":"2026-10-06T15:31:12Z","isPatch":true,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"Hi Julia\n\nOn 06/10/2026 14:02, Julia Evans via GitGitGadget wrote:\n> From: Julia Evans <julia@jvns.ca>\n> > During a merge conflict, we suggest using --continue to continue the\n> merge for rebase, revert, and cherry-pick.\n> > Change the `git merge` advice to be consistent.\n> Commit 367ff694281ce569edd8f6e444fc770f92f5d215 says that\n\nWhen we use the output of \"git show -s --format=reference\" when referring to previous commits, so this would be\n\n367ff69428 (merge: add '--continue' option as a synonym for 'git commit', 2016-12-14)\n\n> `git merge --continue` is intended to be a synonym for `git commit`,\n> and the `git merge` man page already suggests to use\n> `git merge --continue`.\n\nThis looks like a sensible improvement. I wonder if we should fix the grammar at the same time so it says\n\n    (use \"git merge --continue\" to conclude the merge)\n\nrather than\n\n    (use \"git merge --continue\" to conclude merge)\n\nThanks\n\nPhillip\n\n> Signed-off-by: Julia Evans <julia@jvns.ca>\n> ---\n>      status: suggest git merge --continue, not git commit\n>      >      We discussed making this consistent in another thread:\n>      https://lore.kernel.org/git/623cdf71-8076-4967-aff1-3ebeb57d1e3a@app.fastmail.com/T/#m4bdcb555cbdff4132fb1a678594f26b598e0b38f\n>      >      From some research:\n>      >       * git merge --continue was introduced in 367ff694281c in Dec 2016. It\n>         says that git merge --continue is intended to be a synonym for git\n>         commit. (thread here:\n>         https://lore.kernel.org/git/20161214083757.26412-1-judge.packham@gmail.com/)\n>       * This line of the advice was last touched in July 2016, before git\n>         merge --continue was introduced.\n>      >      So I don't see any obvious reason not to change the advice.\n>      >      Translations will need to be updated, I still don't know how that\n>      process works. Updating the translations should be straightforward since\n>      it's just a change in the command.\n> > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2249%2Fjvns%2Fadvice-merge-v1\n> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2249/jvns/advice-merge-v1\n> Pull-Request: https://github.com/gitgitgadget/git/pull/2249\n> >   t/t7060-wtstatus.sh    | 8 ++++----\n>   t/t7512-status-help.sh | 4 ++--\n>   wt-status.c            | 4 ++--\n>   3 files changed, 8 insertions(+), 8 deletions(-)\n> > diff --git a/t/t7060-wtstatus.sh b/t/t7060-wtstatus.sh\n> index 942ddbbf0e..a9b435b5e3 100755\n> --- a/t/t7060-wtstatus.sh\n> +++ b/t/t7060-wtstatus.sh\n> @@ -37,7 +37,7 @@ test_expect_success 'M/D conflict does not segfault' '\n>   \tcat >expect <<EOF &&\n>   On branch side\n>   You have unmerged paths.\n> -  (fix conflicts and run \"git commit\")\n> +  (fix conflicts and run \"git merge --continue\")\n>     (use \"git merge --abort\" to abort the merge)\n>   >   Unmerged paths:\n> @@ -141,7 +141,7 @@ test_expect_success 'status when conflicts with add and rm advice (deleted by th\n>   \tcat >expected <<\\EOF &&\n>   On branch main\n>   You have unmerged paths.\n> -  (fix conflicts and run \"git commit\")\n> +  (fix conflicts and run \"git merge --continue\")\n>     (use \"git merge --abort\" to abort the merge)\n>   >   Unmerged paths:\n> @@ -174,7 +174,7 @@ test_expect_success 'status when conflicts with add and rm advice (both deleted)\n>   \tcat >expected <<\\EOF &&\n>   On branch conflict_second\n>   You have unmerged paths.\n> -  (fix conflicts and run \"git commit\")\n> +  (fix conflicts and run \"git merge --continue\")\n>     (use \"git merge --abort\" to abort the merge)\n>   >   Unmerged paths:\n> @@ -198,7 +198,7 @@ test_expect_success 'status when conflicts with only rm advice (both deleted)' '\n>   \tcat >expected <<\\EOF &&\n>   On branch conflict_second\n>   You have unmerged paths.\n> -  (fix conflicts and run \"git commit\")\n> +  (fix conflicts and run \"git merge --continue\")\n>     (use \"git merge --abort\" to abort the merge)\n>   >   Changes to be committed:\n> diff --git a/t/t7512-status-help.sh b/t/t7512-status-help.sh\n> index aca4b6d332..776a0dd5b8 100755\n> --- a/t/t7512-status-help.sh\n> +++ b/t/t7512-status-help.sh\n> @@ -31,7 +31,7 @@ test_expect_success 'status when conflicts unresolved' '\n>   \tcat >expected <<\\EOF &&\n>   On branch conflicts\n>   You have unmerged paths.\n> -  (fix conflicts and run \"git commit\")\n> +  (fix conflicts and run \"git merge --continue\")\n>     (use \"git merge --abort\" to abort the merge)\n>   >   Unmerged paths:\n> @@ -53,7 +53,7 @@ test_expect_success 'status when conflicts resolved before commit' '\n>   \tcat >expected <<\\EOF &&\n>   On branch conflicts\n>   All conflicts fixed but you are still merging.\n> -  (use \"git commit\" to conclude merge)\n> +  (use \"git merge --continue\" to conclude merge)\n>   >   Changes to be committed:\n>   \tmodified:   main.txt\n> diff --git a/wt-status.c b/wt-status.c\n> index 57772c7501..f7b0dc29d5 100644\n> --- a/wt-status.c\n> +++ b/wt-status.c\n> @@ -1273,7 +1273,7 @@ static void show_merge_in_progress(struct wt_status *s,\n>   \t\tstatus_printf_ln(s, color, _(\"You have unmerged paths.\"));\n>   \t\tif (s->hints) {\n>   \t\t\tstatus_printf_ln(s, color,\n> -\t\t\t\t\t _(\"  (fix conflicts and run \\\"git commit\\\")\"));\n> +\t\t\t\t\t _(\"  (fix conflicts and run \\\"git merge --continue\\\")\"));\n>   \t\t\tstatus_printf_ln(s, color,\n>   \t\t\t\t\t _(\"  (use \\\"git merge --abort\\\" to abort the merge)\"));\n>   \t\t}\n> @@ -1282,7 +1282,7 @@ static void show_merge_in_progress(struct wt_status *s,\n>   \t\t\t_(\"All conflicts fixed but you are still merging.\"));\n>   \t\tif (s->hints)\n>   \t\t\tstatus_printf_ln(s, color,\n> -\t\t\t\t_(\"  (use \\\"git commit\\\" to conclude merge)\"));\n> +\t\t\t\t_(\"  (use \\\"git merge --continue\\\" to conclude merge)\"));\n>   \t}\n>   \twt_longstatus_print_trailer(s);\n>   }\n> > base-commit: 5a7d1e8045ce66c908f62598e26cbb8df7b39a90\n\n\n"},{"id":"554322","messageId":"xmqq5wzeelmf.fsf@gitster.g","threadId":"66473","inReplyTo":"pull.2249.git.1791291762665.gitgitgadget@gmail.com","subject":"Re: [PATCH] status: suggest `git merge --continue`, not `git commit`","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-10-06T18:20:56Z","receivedAt":"2026-10-06T18:20:56Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Julia Evans via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n[Administrivia]\n\nAs you have\n\n    cc: D. Ben Knoble\" ben.knoble@gmail.com\n\nat the end of your pull request that you gave to GitGitGadget, you\nended up with a bogus Cc: address that reads\n\n    \"D. Ben Knoble <ben.knoble\"@gmail.com>\n\nyou may want to help improving GGG by raising an issue to reject (or\nignore) such a malformed address.\n\n[end of administrivia]\n\n> diff --git a/t/t7060-wtstatus.sh b/t/t7060-wtstatus.sh\n> index 942ddbbf0e..a9b435b5e3 100755\n> --- a/t/t7060-wtstatus.sh\n> +++ b/t/t7060-wtstatus.sh\n> @@ -37,7 +37,7 @@ test_expect_success 'M/D conflict does not segfault' '\n>  \tcat >expect <<EOF &&\n>  On branch side\n>  You have unmerged paths.\n> -  (fix conflicts and run \"git commit\")\n> +  (fix conflicts and run \"git merge --continue\")\n>    (use \"git merge --abort\" to abort the merge)\n\nThis message comes from show_merge_in_progress(), which is called\nonly when the code is convinced that it is seeing an unmerged\nindex due to a conflicted git merge.  We can therefore make this\nmessage as merge-specific as we want.  The suggestion to use\n'git merge --abort' already does this.\n\n> diff --git a/wt-status.c b/wt-status.c\n> index 57772c7501..f7b0dc29d5 100644\n> --- a/wt-status.c\n> +++ b/wt-status.c\n> @@ -1273,7 +1273,7 @@ static void show_merge_in_progress(struct wt_status *s,\n>  \t\tstatus_printf_ln(s, color, _(\"You have unmerged paths.\"));\n>  \t\tif (s->hints) {\n>  \t\t\tstatus_printf_ln(s, color,\n> -\t\t\t\t\t _(\"  (fix conflicts and run \\\"git commit\\\")\"));\n> +\t\t\t\t\t _(\"  (fix conflicts and run \\\"git merge --continue\\\")\"));\n>  \t\t\tstatus_printf_ln(s, color,\n>  \t\t\t\t\t _(\"  (use \\\"git merge --abort\\\" to abort the merge)\"));\n>  \t\t}\n> @@ -1282,7 +1282,7 @@ static void show_merge_in_progress(struct wt_status *s,\n>  \t\t\t_(\"All conflicts fixed but you are still merging.\"));\n>  \t\tif (s->hints)\n>  \t\t\tstatus_printf_ln(s, color,\n> -\t\t\t\t_(\"  (use \\\"git commit\\\" to conclude merge)\"));\n> +\t\t\t\t_(\"  (use \\\"git merge --continue\\\" to conclude merge)\"));\n>  \t}\n>  \twt_longstatus_print_trailer(s);\n>  }\n\nWe could tighten \"You have unmerged paths.\" even further to indicate\nthat these paths came from a conflicted 'git merge'.  In the same\nfile, show_cherry_pick_in_progress() and show_revert_in_progress()\nalready provide instructions very specific to these commands.  Since\nthe message for 'git merge' is the oldest, it is not surprising that\nwe did not update it when 'git merge --continue', the instructions\nfor cherry-pick and revert, or 'git merge --abort' instruction were\nadded to the system.  This commit moves us belatedly in the right\ndirection, and as always, it is better late than never.\n\nThe changes look good.  Thanks.\n\n"}]}