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)
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 firstIt’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