git checkout command exists since the beginning of git
It is used for these things:
creating new branch
git checkout -b new-feature upstream/main
switching branch
git checkout main
restoring unstaged changes
git checkout README.md
checking out code from other branch
git checkout v1.0.0 — README.md
git checkout command confuses everyone who start using git
Why?
Because it mixes two concepts:
branches juggling
restoring files
That’s why new commands were added with Git 2.23 (August 2019, almost 5 years ago):
git switch: for playing with branches
git restore: for restoring files.
git restore can be used as a simple replacement on action on files.
the only noticeable changes between git switch and git checkout is that branch creation was done with git checkout -b name while it’s now git switch -c name