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
Credit: https://twitter.com/_risacan_/status/1162539626373865472