git add foo.rb
// continue working in foo.rb
git commit foo.rb
will commit the latest version of foo.rb.That's because git commit handles its arguments by add-ing them to the index (staging area) before doing the actual committing.
I'm not so sure about the conceptual graph from the paper, either. The stash is a commit, it doesn't have anything to do with file states.