Git FAQ
Frequently asked questions around Git and Version Control.
Git FAQ featured image

How do I create a new branch in Git?

Git makes creating and managing branches very easy. In fact, the power and flexibility of its branching model is one of the biggest advantages of Git!

You can create local branches on your machine to develop new features or work on bug fixes. Afterwards, you can publish them to any remote hosting service, such as GitHub or BitBucket, to allow your teammates to collaborate.

There are a couple of different use cases when creating branches in Git. Let's look at each of them in turn.

How do I create a new branch based on the current HEAD?

To create a new branch that is based on your currently checked out (HEAD) branch, simply use "git branch" with the name of the new branch as the only parameter:

$ git branch <new-branch>

How do I create a new branch based on some existing one?

If you want to base your new branch on a different existing branch, simply add that branch's name as a starting point:

$ git branch <new-branch> <base-branch>

If you're using the Tower Git client, you can simply use drag and drop to create new branches (and to merge, cherry-pick, etc.):

You can learn more about Tower's drag and drop capabilities by clicking here.

How do I create a new branch from a specific commit?

If you want to start your new branch based on a specific commit (not a branch), then you can provide the commit hash as the starting point:

$ git branch <new-branch> f71ac24d

How do I create a new branch from a specific tag?

You can also base your new branch on a specific tag you already have in your repository:

$ git branch <new-branch> v1.2

How do I create a new branch from a remote branch?

To take a remote branch as the basis for your new local branch, you can use the "--track" option:

$ git branch --track <new-branch> origin/<base-branch>

Alternatively, you can also use the "checkout" command to do this. If you want to name the local branch like the remote one, you only have to specify the remote branch's name:

$ git checkout --track origin/<base-branch>

How do I create a new branch in a remote repository?

After working on your new local branch for some time, you might want to publish it in your remote repository, to share it with your team:

$ git push -u origin <local-branch>

The "-u" flag tells Git to establish a "tracking connection", which will make pushing and pulling much easier in the future.


What does the "git branch" command do?

The "git branch" command is used for a variety of tasks:

  • creating new local branches
  • deleting existing local or remote branches
  • listing local and/or remote branches
  • listing branches that e.g. haven't been merged yet


Learn More

About Us

As the makers of Tower, the best Git client for Mac and Windows, we help over 100,000 users in companies like Apple, Google, Amazon, Twitter, and Ebay get the most out of Git.

Just like with Tower, our mission with this platform is to help people become better professionals.

That's why we provide our guides, videos, and cheat sheets (about version control with Git and lots of other topics) for free.