Bagas Sanjaya <bagasdotme@xxxxxxxxx> writes: > On 11/08/21 11.57, Felipe Contreras wrote: >> @@ -12,6 +12,7 @@ SYNOPSIS >> 'git stage' [options] [--] [<paths>...] >> 'git stage' (-a | --add) [options] [--] [<paths>...] >> 'git stage' (-r | --remove) [options] [--] [<paths>...] >> +'git stage' (-d | --diff) [options] [--] [<paths>...] >> >> DESCRIPTION >> @@ -32,11 +33,15 @@ OPTIONS >> --remove:: >> Remove changes from the staging area. See linkgit:git-reset[1]. >> +-d:: >> +--diff:: >> + View the changes staged for the next commit. See linkgit:git-diff[1]. >> > > Is it synonym to `git diff --staged`? Looks like it. A more notable aspect of the above list is not the similarity but difference from the rest of Git. The above organizes various operations on the staging area in a single command as its operating modes, so you'd use "git stage --diff" for comparing with the staging area but use something else ("git commit --diff HEAD"???). It is a good example that illustrates that the proposed organization may not help learning or using the system for operations that also apply to other things like commit and working tree (in other words, "git stage --grep" may not be such a good idea for the same reason as "git stage --diff"). But if it were limited to operations that apply only to the index (e.g. "git add" and "git rm"), it may be an improvement (I think we added "git stage" synonym exactly for that reason, already). Having said that, if we added "git stage --remove", there may be complaints that say "the stage command does too many things", just like those that caused "checkout" to be split into "restore" (check out contents for selected paths in order to work on the current branch) and "switch" (check out a branch in order to start working on it). I dunno.