diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt index 03056dad0de5ab6121c1f7a506dc4dacf1f83c7c..8a31ccffea751cf64a049ce00605ba90def5a067 100644 --- a/Documentation/git-clean.txt +++ b/Documentation/git-clean.txt @@ -64,7 +64,7 @@ OPTIONS directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with `-e` options. This allows removing all untracked files, including build products. This can be used (possibly in - conjunction with 'git reset') to create a pristine + conjunction with 'git restore' or 'git reset') to create a pristine working directory to test a clean build. -X:: diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt index a85c2c2a4c8127eb41a68b2f103281e3682e1554..76281932847ba95197894a6b972ef3cb157a40ba 100644 --- a/Documentation/git-commit.txt +++ b/Documentation/git-commit.txt @@ -359,7 +359,7 @@ When recording your own work, the contents of modified files in your working tree are temporarily stored to a staging area called the "index" with 'git add'. A file can be reverted back, only in the index but not in the working tree, -to that of the last commit with `git reset HEAD -- `, +to that of the last commit with `git restore --staged `, which effectively reverts 'git add' and prevents the changes to this file from participating in the next commit. After building the state to be committed incrementally with these commands, diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt index 0a24a5679e3625294f254ba663318ad01e4128a3..01bfcecf690e857c5a3b14ef3be1f9307efe825d 100644 --- a/Documentation/git-format-patch.txt +++ b/Documentation/git-format-patch.txt @@ -422,7 +422,7 @@ One way to test if your MUA is set up correctly is: $ git fetch master:test-apply $ git switch test-apply - $ git reset --hard + $ git restore --source=HEAD --staged --worktree :/ $ git am a.patch If it does not apply correctly, there can be various reasons. diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt index c25f8a95b93c472affbf3a43abef9b8cae142c75..633d71d36af2562e57dd913951226356f54ca80a 100644 --- a/Documentation/git-reset.txt +++ b/Documentation/git-reset.txt @@ -29,9 +29,9 @@ This means that `git reset ` is the opposite of `git add `git restore [--source=] --staged ...`. + After running `git reset ` to update the index entry, you can -use linkgit:git-checkout[1] to check the contents out of the index to -the working tree. -Alternatively, using linkgit:git-checkout[1] and specifying a commit, you +use linkgit:git-restore[1] to check the contents out of the index to +the working tree. Alternatively, using linkgit:git-restore[1] +and specifying a commit with `--source`, you can copy the contents of a path out of a commit to the index and to the working tree in one go. diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt index 018ecf49d3c56076a047411b40aa85e69e84cf6b..9aadc36881beae56b11202450947bcf28f94f3f6 100644 --- a/Documentation/git-revert.txt +++ b/Documentation/git-revert.txt @@ -26,8 +26,8 @@ effect of some earlier commits (often only a faulty one). If you want to throw away all uncommitted changes in your working directory, you should see linkgit:git-reset[1], particularly the `--hard` option. If you want to extract specific files as they were in another commit, you -should see linkgit:git-checkout[1], specifically the `git checkout - -- ` syntax. Take care with these alternatives as +should see linkgit:git-restore[1], specifically the `--source` +option. Take care with these alternatives as both will discard uncommitted changes in your working directory. See "Reset, restore and revert" in linkgit:git[1] for the differences diff --git a/Documentation/gitcli.txt b/Documentation/gitcli.txt index 225513ef5e6ee19ff0a9e17e34671e3bbb191619..1ed3ca33b7a94ad8187d7fa490cc212711fd578e 100644 --- a/Documentation/gitcli.txt +++ b/Documentation/gitcli.txt @@ -47,8 +47,8 @@ disambiguating `--` at appropriate places. things: + -------------------------------- -$ git checkout -- *.c -$ git checkout -- \*.c +$ git restore *.c +$ git restore \*.c -------------------------------- + The former lets your shell expand the fileglob, and you are asking diff --git a/Documentation/giteveryday.txt b/Documentation/giteveryday.txt index ad455f3e39870e2f350fa6b6f9466392f8baf0cc..1bd919f92bdd053cdfde7678ae6528f91513bc45 100644 --- a/Documentation/giteveryday.txt +++ b/Documentation/giteveryday.txt @@ -51,8 +51,7 @@ following commands. * linkgit:git-commit[1] to advance the current branch. - * linkgit:git-reset[1] and linkgit:git-checkout[1] (with - pathname parameters) to undo changes. + * linkgit:git-restore[1] to undo changes. * linkgit:git-merge[1] to merge between local branches. @@ -82,7 +81,7 @@ Create a topic branch and develop.:: ------------ $ git switch -c alsa-audio <1> $ edit/compile/test -$ git checkout -- curses/ux_audio_oss.c <2> +$ git restore curses/ux_audio_oss.c <2> $ git add curses/ux_audio_alsa.c <3> $ edit/compile/test $ git diff HEAD <4> diff --git a/Documentation/gittutorial-2.txt b/Documentation/gittutorial-2.txt index e0976f601799f7d29daa1c3e09b9396c9e8c8320..8bdb7d0bd3aa1af4453e07e96487c79a23febc88 100644 --- a/Documentation/gittutorial-2.txt +++ b/Documentation/gittutorial-2.txt @@ -370,13 +370,13 @@ situation: $ git status On branch master Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: closing.txt Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: file.txt diff --git a/Documentation/gittutorial.txt b/Documentation/gittutorial.txt index e6ad6b5f8d276a0f8894b5c2bb2e9affb5be07d3..59ef5cef1f080d079109c50f6034ff88901c658f 100644 --- a/Documentation/gittutorial.txt +++ b/Documentation/gittutorial.txt @@ -110,7 +110,7 @@ $ git status On branch master Changes to be committed: Your branch is up to date with 'origin/master'. - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: file1 modified: file2 diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt index 4e210970e1d375959377df60dfc51221b027ca6f..8bce75b2cf2b21960403909291d324551e263c7f 100644 --- a/Documentation/user-manual.txt +++ b/Documentation/user-manual.txt @@ -1446,7 +1446,7 @@ mistake, you can return the entire working tree to the last committed state with ------------------------------------------------- -$ git reset --hard HEAD +$ git restore --staged --worktree :/ ------------------------------------------------- If you make a commit that you later wish you hadn't, there are two @@ -1523,12 +1523,10 @@ Checking out an old version of a file In the process of undoing a previous bad change, you may find it useful to check out an older version of a particular file using -linkgit:git-checkout[1]. We've used `git checkout` before to switch -branches, but it has quite different behavior if it is given a path -name: the command +linkgit:git-restore[1]. The command ------------------------------------------------- -$ git checkout HEAD^ path/to/file +$ git restore --source=HEAD^ path/to/file ------------------------------------------------- replaces path/to/file by the contents it had in the commit HEAD^, and @@ -3800,8 +3798,8 @@ use linkgit:git-tag[1] for both. The Workflow ------------ -High-level operations such as linkgit:git-commit[1], -linkgit:git-checkout[1] and linkgit:git-reset[1] work by moving data +High-level operations such as linkgit:git-commit[1] and +linkgit:git-restore[1] work by moving data between the working tree, the index, and the object database. Git provides low-level operations which perform each of these steps individually. diff --git a/builtin/clone.c b/builtin/clone.c index 50bde9961809b1d55c74fb6d3cbfbf5a86ddf5c7..024eb57996402d8111330be3d210f9c544505a60 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -492,7 +492,7 @@ static enum { static const char junk_leave_repo_msg[] = N_("Clone succeeded, but checkout failed.\n" "You can inspect what was checked out with 'git status'\n" - "and retry the checkout with 'git checkout -f HEAD'\n"); + "and retry with 'git restore --source=HEAD :/'\n"); static void remove_junk(void) { diff --git a/builtin/commit.c b/builtin/commit.c index f17537474a9d0ed9672393fc5dc3845932dd4dd4..fa5982cc861ea19ab40622b916a68ec9b3423162 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -1676,7 +1676,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix) if (commit_index_files()) die(_("repository has been updated, but unable to write\n" "new_index file. Check that disk is not full and quota is\n" - "not exceeded, and then \"git reset HEAD\" to recover.")); + "not exceeded, and then \"git restore --staged :/\" to recover.")); if (git_env_bool(GIT_TEST_COMMIT_GRAPH, 0)) write_commit_graph_reachable(get_object_directory(), 0, 0); diff --git a/command-list.txt b/command-list.txt index b9eae1c25831fe55d60469f67675f1e911b9671d..cf8dccb439c4b969c15a812b6bb8a44470830f6d 100644 --- a/command-list.txt +++ b/command-list.txt @@ -59,7 +59,7 @@ git-cat-file plumbinginterrogators git-check-attr purehelpers git-check-ignore purehelpers git-check-mailmap purehelpers -git-checkout mainporcelain history +git-checkout mainporcelain git-checkout-index plumbingmanipulators git-check-ref-format purehelpers git-cherry plumbinginterrogators complete diff --git a/t/t7508-status.sh b/t/t7508-status.sh index e1f11293e2299079d59ebbaf9fa6570e2ff9190c..681bc314b483d61c145b450c195da7449bd413cc 100755 --- a/t/t7508-status.sh +++ b/t/t7508-status.sh @@ -94,13 +94,13 @@ test_expect_success 'status --column' ' # (use "git pull" to merge the remote branch into yours) # # Changes to be committed: -# (use "git reset HEAD ..." to unstage) +# (use "git restore --staged ..." to unstage) # # new file: dir2/added # # Changes not staged for commit: # (use "git add ..." to update what will be committed) -# (use "git checkout -- ..." to discard changes in working directory) +# (use "git restore ..." to discard changes in working directory) # # modified: dir1/modified # @@ -128,13 +128,13 @@ cat >expect <<\EOF # (use "git pull" to merge the remote branch into yours) # # Changes to be committed: -# (use "git reset HEAD ..." to unstage) +# (use "git restore --staged ..." to unstage) # # new file: dir2/added # # Changes not staged for commit: # (use "git add ..." to update what will be committed) -# (use "git checkout -- ..." to discard changes in working directory) +# (use "git restore ..." to discard changes in working directory) # # modified: dir1/modified # @@ -278,13 +278,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -347,13 +347,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -420,13 +420,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -484,13 +484,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -542,13 +542,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -605,13 +605,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: ../dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: modified @@ -676,13 +676,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -802,13 +802,13 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -852,7 +852,7 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: dir1/modified @@ -896,14 +896,14 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added new file: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -956,14 +956,14 @@ and have 1 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) new file: dir2/added new file: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -1019,7 +1019,7 @@ and have 2 and 2 different commits each, respectively. Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -1068,14 +1068,14 @@ and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD^1 ..." to unstage) + (use "git restore --source=HEAD^1 --staged ..." to unstage) new file: dir2/added new file: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -1123,13 +1123,13 @@ and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -1235,13 +1235,13 @@ and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) (commit or discard the untracked or modified content in submodules) modified: dir1/modified @@ -1295,13 +1295,13 @@ and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified modified: sm (new commits) @@ -1379,13 +1379,13 @@ cat > expect << EOF ; (use "git pull" to merge the remote branch into yours) ; ; Changes to be committed: -; (use "git reset HEAD ..." to unstage) +; (use "git restore --staged ..." to unstage) ; ; modified: sm ; ; Changes not staged for commit: ; (use "git add ..." to update what will be committed) -; (use "git checkout -- ..." to discard changes in working directory) +; (use "git restore ..." to discard changes in working directory) ; ; modified: dir1/modified ; modified: sm (new commits) @@ -1431,7 +1431,7 @@ and have 2 and 2 different commits each, respectively. Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -1458,13 +1458,13 @@ and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified @@ -1581,13 +1581,13 @@ and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: sm Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: dir1/modified diff --git a/t/t7512-status-help.sh b/t/t7512-status-help.sh index 458608cc1e7ca51e1a7e40017794b5f2c55d3db3..1b9712c67569a5092fec931c15806935df505a85 100755 --- a/t/t7512-status-help.sh +++ b/t/t7512-status-help.sh @@ -85,7 +85,7 @@ You are currently rebasing branch '\''rebase_conflicts'\'' on '\''$ONTO'\''. (use "git rebase --abort" to check out the original branch) Unmerged paths: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) (use "git add ..." to mark resolution) both modified: main.txt @@ -110,7 +110,7 @@ You are currently rebasing branch '\''rebase_conflicts'\'' on '\''$ONTO'\''. (all conflicts fixed: run "git rebase --continue") Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: main.txt @@ -148,7 +148,7 @@ You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO (use "git rebase --abort" to check out the original branch) Unmerged paths: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) (use "git add ..." to mark resolution) both modified: main.txt @@ -176,7 +176,7 @@ You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO (all conflicts fixed: run "git rebase --continue") Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: main.txt @@ -246,7 +246,7 @@ You are currently splitting a commit while rebasing branch '\''split_commit'\'' Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: main.txt @@ -354,7 +354,7 @@ You are currently splitting a commit while rebasing branch '\''several_edits'\'' Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: main.txt @@ -453,7 +453,7 @@ You are currently splitting a commit while rebasing branch '\''several_edits'\'' Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: main.txt @@ -557,7 +557,7 @@ You are currently splitting a commit while rebasing branch '\''several_edits'\'' Changes not staged for commit: (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) + (use "git restore ..." to discard changes in working directory) modified: main.txt @@ -816,7 +816,7 @@ You are currently reverting commit $TO_REVERT. (use "git revert --abort" to cancel the revert operation) Unmerged paths: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) (use "git add ..." to mark resolution) both modified: to-revert.txt @@ -837,7 +837,7 @@ You are currently reverting commit $TO_REVERT. (use "git revert --abort" to cancel the revert operation) Changes to be committed: - (use "git reset HEAD ..." to unstage) + (use "git restore --staged ..." to unstage) modified: to-revert.txt diff --git a/wt-status.c b/wt-status.c index 445a36204a69cf69f2d3e87ea6d308a6b5a9ab29..19fd1add75439e2e5351f4c38d46f4cc2faf8b7f 100644 --- a/wt-status.c +++ b/wt-status.c @@ -178,9 +178,15 @@ static void wt_longstatus_print_unmerged_header(struct wt_status *s) return; if (s->whence != FROM_COMMIT) ; - else if (!s->is_initial) - status_printf_ln(s, c, _(" (use \"git reset %s ...\" to unstage)"), s->reference); - else + else if (!s->is_initial) { + if (!strcmp(s->reference, "HEAD")) + status_printf_ln(s, c, + _(" (use \"git restore --staged ...\" to unstage)")); + else + status_printf_ln(s, c, + _(" (use \"git restore --source=%s --staged ...\" to unstage)"), + s->reference); + } else status_printf_ln(s, c, _(" (use \"git rm --cached ...\" to unstage)")); if (!both_deleted) { @@ -205,9 +211,15 @@ static void wt_longstatus_print_cached_header(struct wt_status *s) return; if (s->whence != FROM_COMMIT) ; /* NEEDSWORK: use "git reset --unresolve"??? */ - else if (!s->is_initial) - status_printf_ln(s, c, _(" (use \"git reset %s ...\" to unstage)"), s->reference); - else + else if (!s->is_initial) { + if (!strcmp(s->reference, "HEAD")) + status_printf_ln(s, c + , _(" (use \"git restore --staged ...\" to unstage)")); + else + status_printf_ln(s, c, + _(" (use \"git restore --source=%s --staged ...\" to unstage)"), + s->reference); + } else status_printf_ln(s, c, _(" (use \"git rm --cached ...\" to unstage)")); status_printf_ln(s, c, "%s", ""); } @@ -225,7 +237,7 @@ static void wt_longstatus_print_dirty_header(struct wt_status *s, status_printf_ln(s, c, _(" (use \"git add ...\" to update what will be committed)")); else status_printf_ln(s, c, _(" (use \"git add/rm ...\" to update what will be committed)")); - status_printf_ln(s, c, _(" (use \"git checkout -- ...\" to discard changes in working directory)")); + status_printf_ln(s, c, _(" (use \"git restore ...\" to discard changes in working directory)")); if (has_dirty_submodules) status_printf_ln(s, c, _(" (commit or discard the untracked or modified content in submodules)")); status_printf_ln(s, c, "%s", "");