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
Top comments (3)
It’s worth mention that git switch is useful to switch to branch that exists only in remote. It works like a shortcut 😎
Docs:
I’m using it before code review to switch to prepared branch with changes
For me
git checkout
seemed simple enough to use for the purposes. Didn't tryswitch
because I thought, wellcheckout
does it anyway (and maybe I got habituated with the-b
).Nice to know about the history here.
Everyone should give a try to git switch and git restore.
My main problem is that git new comers lean the old
git checkout
that is so confusing at first