git switch and git restore, or why not using git checkout

Christophe Colombier - May 4 - - Dev Community

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 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

Image description

Credit: https://twitter.com/_risacan_/status/1162539626373865472

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .