Jeff King wrote: > On Wed, Aug 11, 2021 at 09:00:18AM -0700, Junio C Hamano wrote: > > > 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). > > One thing I find off-putting about "git stage --diff" is that to me, > "stage" reads as a verb. So it is like "git add --diff", which seems > out-of-place; there are two verbs in a row. > > I do not mind the term "staging area", but using "the stage" as a noun > is simply confusing to me in this context. OK, but "stage" can be a noun. Here is one of the definitions: : a center of attention or scene of action This definition doesn't imply what the action is about, but "commit stage" should be perfectly aligned with that definition. Here's another one: : one of two or more sections of a rocket that have their own fuel and engine These rocket stages need to be prepared before the launch, just like changes before a commit. A commit can be thought of as a single-stage rocket, and just like parts can be added and removed from this single-stage before launch, so can changes before a commit. I understand why this might not seem natural to native English speakers, but it's perfectly aligned with the etymology of the word "stage" (to stay). I'm not saying it should be thought of this way, merely that it *can*. Either way, I also thought about adding yet another command `git staging-area` and diff instead of an option be a subcommand: `git staging-area diff`, but to be frank I don't think anybody would end up using this command, especially without default aliases (like `git sa`). So I opted against it. Even though `git stage --diff` is not ideal, it's the least bad option in my option. -- Felipe Contreras