
Moreover, the git log command shows no new commit on master. For example, the removed file Readme.md has come back. Next, let's switch back to the master branch and check if it's unmodified: $ git switch masterĪs we've seen, on the master branch, all changes to the working tree files we made previously have been restored. Then, we've committed the changes to the feature2 branch. Further, all uncommitted changes have been moved from master to the feature2 branch. & git commit -m 'feature2 is done'ġ file changed, 0 insertions(+), 0 deletions(-)Īs we can see in the output above, git switch -C creates a new branch feature2 and brings us to feature2. Next, let's use the git switch command to move these uncommitted changes to a new branch called feature2: $ git switch -C feature2 This time, we've removed the file Readme.md and added a new ReadmeNew.md file. Next, let's do the same test as git checkout -b on the myRepo project: $ git branchĪs we can see in the output above, we're currently on the master branch. It works pretty much the same as the git checkout -b command. Moreover, we can use the -C option to create a new branch and switch to it in one shot. As its name implies, git switch allows us to switch between branches. Therefore, Git has introduced the git switch command since version 2.23 to clear some of the confusion from the checkout command's overloaded usage. The usage of the checkout command is pretty overloaded.

The same command can do many different kinds of operations, such as restoring the working tree files, switching branches, creating branches, moving the head, and so on. Further, there is no new commit on master, either.Īs we've known, Git's checkout command is like a Swiss Army knife. There is no local change on the master branch, as we can see in the output. Now, let's switch back to the master branch and check if we've left it unchanged: $ git checkout master Next, let's stage and commit the changes: $ git add. No changes added to commit (use "git add" and/or "git commit -a")Īs the commands above show, we've created the feature1 branch and moved all uncommitted changes from master to feature1.

" to discard changes in working directory)

You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. Git showed me the following message: You are in detached HEAD state.
Next, let's test the git checkout command on our myRepo project: $ git branch I used git checkoutMoreover, this command will leave the current branch as it is and bring all uncommitted changes to the new branch. The most common use case for checkout is when you. The git checkout -b command will create a new branch and switch to it. The checkout command can switch the currently active branch - but it can also be used to restore files.
