When I first started using Git, I found the
checkout command quite confusing. However, as I adapted to Git's model of version control, it started to make sense. Now I am having to teach Git to my coworkers, and I'm trying to explain
checkout simply. I thought I had a simple explanation (from the documentation):
Checkout a branch or paths to the working tree
That seems to unify some of the things you can do with checkout which seem like a diverse set of operations to someone new to Git:
git checkout . git checkout HEAD . git checkout HEAD~2 git checkout feature/update-readme README.md
...except for the last one, because that doesn't just update the working directory, it stages the file.
How can I understand why or when checkout out will result in having something staged instead of just copied into the working directory?