What is the difference between "git branch" and "git checkout -b"?

GitGit BranchGit Checkout

Git Problem Overview


I used git checkout -b to create a new branch. I think that git branch does the same thing. How do these two commands differ, if they differ at all?

Git Solutions


Solution 1 - Git

git checkout -b BRANCH_NAME creates a new branch and checks out the new branch while git branch BRANCH_NAME creates a new branch but leaves you on the same branch.

In other words git checkout -b BRANCH_NAME does the following for you.

git branch BRANCH_NAME    # create a new branch
git switch BRANCH_NAME    # then switch to the new branch

Solution 2 - Git

git branch creates the branch but you remain in the current branch that you have checked out.

git checkout -b creates a branch and checks it out.

It could be considered a short form of:

git branch name
git checkout name

Solution 3 - Git

  • git branch: Shows all your branches
  • git branch newbranch: Creates a new branch
  • git checkout -b newbranch: Creates a new branch and switches to that branch immediately. This is the same as git branch newbranch followed by git checkout newbranch.

Solution 4 - Git

Full syntax:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

The [FROM_BRANCH] is optional. If there's no FROM_BRANCH, git will use the current branch.

Solution 5 - Git

There is also another flag to mention, which is relative to these..

git checkout -B BRANCH_NAME

This is a very useful command that i've been using recently. This command checks out the branch you specify, and resets the branch based on the source branch.

Solution 6 - Git

There are forms of both commands that are similar (looking at git-scm docs Version 2.11.1):

git branch <branchname> <start-point>

and

git checkout -b <new_branch> <start_point>

The latter executing the branch command first and then adding the checkout. In that form explicitly references to git-branch's doc:

> Specifying -b causes a new branch to be created as if git-branch[2] > were called and then checked out

Solution 7 - Git

Essentially :

A-git branch lets you create a branch plain and simple.

B -git checkout -b allows you to create a branch and switch to it at the same time.

When will you use which ? 1- git branch when you want to create a branch but stay on the current branch. 2- git checkout -b when you want to create and switch. If you look at it is intuitive to create a branch and switch to it. So the choice is yours :)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAdrien JolyView Question on Stackoverflow
Solution 1 - GitFatih AcetView Answer on Stackoverflow
Solution 2 - GitmanojldsView Answer on Stackoverflow
Solution 3 - GitMichel PereiraView Answer on Stackoverflow
Solution 4 - GitTuong LeView Answer on Stackoverflow
Solution 5 - GitddavisonView Answer on Stackoverflow
Solution 6 - GitPshemy108View Answer on Stackoverflow
Solution 7 - Gituser2238769View Answer on Stackoverflow