This is a re-roll of [1] which enhances git-restore to default --source to HEAD when --worktree and --staged are combined. Changes since v1: * tighten the commit message and documentation changes as requested by Junio[2] * drop patch 1/2 since 2/2 threw away all the changes from 1/2, and the end result is the same with or without 1/2 Although the code is identical between v1 and v2, I didn't include Taylor's "Reviewed-by:"[3,4] since the documentation changes have been refined a bit. [1]: https://lore.kernel.org/git/20200501082746.23943-1-sunshine@xxxxxxxxxxxxxx/ [2]: https://lore.kernel.org/git/xmqqimhfoelf.fsf@xxxxxxxxxxxxxxxxxxxxxx/ [3]: https://lore.kernel.org/git/20200501221613.GC41612@syl.local/ [4]: https://lore.kernel.org/git/20200501221951.GD41612@syl.local/ Eric Sunshine (1): restore: default to HEAD when combining --staged and --worktree Documentation/git-restore.txt | 11 ++++------- builtin/checkout.c | 6 +++--- t/t2070-restore.sh | 11 +++++++++++ 3 files changed, 18 insertions(+), 10 deletions(-) Interdiff against v1: diff --git a/Documentation/git-restore.txt b/Documentation/git-restore.txt index 5b61812e17..84c6c40010 100644 --- a/Documentation/git-restore.txt +++ b/Documentation/git-restore.txt @@ -22,10 +22,8 @@ The command can also be used to restore the content in the index with `--staged`, or restore both the working tree and the index with `--staged --worktree`. -By default, the restore source for `--worktree` is the index, and the -restore source for `--staged` is `HEAD`. When combining `--worktree` and -`--staged`, the restore source is `HEAD`. `--source` can be used to specify -a different commit as the restore source. +By default, if `--staged` is given, the contents are restored from `HEAD`, +otherwise from the index. Use `--source` to restore from a different commit. See "Reset, restore and revert" in linkgit:git[1] for the differences between the three commands. @@ -40,10 +38,8 @@ OPTIONS tree. It is common to specify the source tree by naming a commit, branch or tag associated with it. + -If not specified, the default restore source for `--worktree` is -the index, and the default restore source for `--staged` is -`HEAD`. When both `--staged` and `--worktree` are specified, -the default restore source is `HEAD`. +If not specified, the contents are restored from `HEAD` if `--staged` is +given, otherwise from the index. -p:: --patch:: -- 2.26.2.672.g232c24e857