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
- Learn more about the git branch command
- Check out the chapter Branching can Change Your Life in our free online book
- More frequently asked questions about Git & version control