

Why? Because it was created for this specific task.

If you have to switch branches, use the git switch command instead of git checkout. Which one should you use? Git checkout or git switch? At the same time git checkout remains there for advanced options to deal with tree-ish. The idea behind this move is to let people use git switch for switching branches and git restore for undoing changes from a commit. Just remember that git checkout does more than simple branch switching and the additional functionalities started creating confusion.Īnd hence, with the release of Git 2.23, its developers introduced two new git commands: git switch and git restore. copy files from a tree-ish to the working tree.copy files from the stage to the working tree.It allows you to copy files from any branch or commit directly into your working tree without switching branches.Īs Dan Fabulich notes, git checkout does three things: It can also be used to restore changes from a certain commit. Git checkout is the old command which was used to create and switch branches. Difference between git checkout and git switch So, what's the difference between git switch and git checkout? If both can be used for switching branches, why are there two commands for the same purpose? Let me explain.
GIT SWITCH BRANCH SAME PROJECT HOW TO
If you look for how to switch branches in git, you'll come across some examples where git switch is used and some examples where git checkout is used. This will not only create a local branch, but also set up a "tracking relationship" between the two branches, making sure that pulling and pushing will be as easy as "git pull" and "git push".When you start learning and using Git, you'll come across the common situation where you have to change branches.Īnd here, things could become a bit confusing for you. When Git cannot find the specified name as a local branch, it will assume you want to check out the respective remote branch of that name: $ git switch remote-branch If you want to check out a remote branch (that doesn't yet exist as a local branch in your local repository), you can simply provide the remote branch's name. If, in one go, you also want to create a new local branch, you can use the "-c" parameter: $ git switch -c new-branch This will make the given branch the new HEAD branch.

The most common scenario is to simply specify the local branch you want to switch to: $ git switch other-branch Simply double-click a branch in the sidebar to make it the new HEAD branch - or choose a branch from a list. In case you are using the Tower Git client, switching branches becomes easy as pie. This can be helpful if you want to often and quickly jump between two branches. When specifying just the "-" character instead of a branch name, Git will switch back to the last checked out branch. Using the "-discard-changes" flag will discard any of your current local changes and then switch to the specified branch. However, if you have local modifications that would conflict with the switched-to branch, Git would abort the switch. As a general rule, your working copy does NOT have to be clean before you can use "switch". Switch to the specified branch and discard any local changes to obtain a clean working copy. You can also specify a starting point (either another branch or a concrete revision) if you don't provide any specific starting point, the new branch will be based on the current HEAD branch. Using the "-c" flag, you can specify a name for a new branch that should be created. The name of a new local branch you want to create. If you specify the name of an existing local branch, you will switch to this branch and make it the current "HEAD" branch.īut you can also specify a remote branch: in that case, Git will create a new local branch based on that remote branch and set up a tracking relationship. The name of a local or remote branch that you want to switch to. It has a very clear and limited purpose: switching and creating branches! Important Options The "switch" command provides a simple alternative to "checkout". The problem with "checkout", however, is that it's a very versatile command: you can not only use it to switch branches, but also to discard changes, restore files, and much more. It's relatively new (added in Git v2.23) and provides a simpler alternative to the classic "checkout" command.īefore "switch" was available, changing branches had to be done with the "checkout" command. The "switch" command allows you to switch your current HEAD branch.
