If you don't have `stage` how are you going to generate a commit which has only some of the changes you've done (potentially including partial commits from files)?
`stage` is unnecessary if you have a really simple workflow, but it provides a lot of flexibility at very little cognitive cost.
By specifying the parts you want to include when you commit. I think it's unnecessary for any reasonable work flow, and doesn't manage to break even on its benefit vs. cognitive cost.
"git add -p" generally negates the need for incremental staging, unless you have made two unrelated changes to the same diff hunks that need to be untangled.
`stage` is unnecessary if you have a really simple workflow, but it provides a lot of flexibility at very little cognitive cost.