@b0rk maybe one way to do it would be by contradiction. suppose there was no add, commit was a one step process, it always just snapshotted the full state of your working directory. 1/

in reply to @b0rk

@b0rk you might get frustrated, you’d want to commit but there’d still be some file not ready. you’d have to mv it to some temporary place commit, mv it back. or maybe you have changes that logically are about multiple things, you’d like to be able to attach a message like “implement feature X” to some changes and “fix bug Y” to others. 2/

in reply to self

@b0rk add and the “staging area” constitute the feature, the improvement over one-step commit, that let you control what gets snapshotted (allowing the convenience of unfinished or temporary work in your working dir) and how changes (even changes within a single file) get labeled. /fin

in reply to self