How To Create a New Branch in Git: Simple Steps and Smart Usage
Creating a new branch in Git is one of those skills that quietly makes your life much easier once you start using it. Branches let you experiment, fix bugs, and work on new features without touching your main code until you’re ready.
This FAQ walks through what branches are, how to create them, and what choices you’ll need to make based on your own workflow and tools.
What Is a Git Branch, in Plain Language?
Think of your project’s history as a timeline of changes.
- The main branch (often called
mainormaster) is your primary timeline. - A Git branch is like creating an alternate timeline where you can:
- Try a new feature
- Fix a bug
- Refactor code
All without changing what’s currently working.
Key ideas:
- A branch is just a pointer to a specific commit in your Git history.
- When you checkout (switch to) a branch, you’re telling Git:
“Show my files as they look on this timeline.” - When you’re happy with your changes, you merge that branch back into another branch (often
main).
This is why modern development almost always uses branches: they separate work so you don’t break your stable code every time you experiment.
Basic Commands: How To Create a New Branch in Git
You can create and switch branches in a few slightly different ways. The exact command you choose depends mostly on your Git version and personal preference.
Check Your Current Branch
Before creating a new branch, see where you are:
git status or
git branch - The branch with the
*is your current branch. - Most teams do new work off
main, but your default might bemasteror another name.
Option 1: Create a Branch, Then Switch to It
This is the two-step, very clear way:
Create the branch:
git branch feature-loginThis makes a new branch pointing to your current commit, but doesn’t move you onto it.
Switch to the new branch:
git checkout feature-loginNow your working files reflect
feature-login.
Option 2: Create and Switch in One Command
Git now offers a combined command that’s more convenient:
git switch -c feature-login or, with older Git versions:
git checkout -b feature-login -cor-bmeans “create a new branch and switch to it.”- This is the most common way people start feature branches.
How To Create a Branch From a Specific Commit or Branch
By default, new branches are created from your current commit.
To base it off something else:
From another branch:
git switch main git pull # optional but recommended to update git switch -c hotfix-typoFrom a specific commit (using the commit hash):
git branch experiment 3f9a2c1 git switch experiment
This is useful if you want to branch off from before a bug was introduced or from a particular released version.
Creating Remote Branches (GitHub, GitLab, etc.)
If you’re using a remote service like GitHub:
Create the branch locally (as above):
git switch -c feature-loginPush it to the remote:
git push -u origin feature-login
What happens:
originis your default name for the remote repository.-usets up tracking, so futuregit pushandgit pullknow which remote branch to sync with.- After this, you can just run
git pushwithout extra arguments while on that branch.
You can also create branches directly in web UIs (like GitHub’s “New branch” button), then pull and switch to them locally:
git fetch git switch feature-login Graphical Tools: Creating Git Branches Without the Command Line
If you prefer a visual approach, most Git GUIs and IDEs expose branching with simple buttons or menus:
Code editors / IDEs (like VS Code, JetBrains IDEs, etc.):
- Usually have a branch icon or a status bar entry showing your current branch.
- Clicking it normally gives options like:
- “Create new branch”
- “Checkout to…”
- “Publish branch” (to remote)
Git GUIs:
- Offer right-click menus on branches or commits:
- “Create branch from here”
- “New branch”
- Often show a graph view of branches and merges, which helps if your history is busy.
- Offer right-click menus on branches or commits:
Under the hood, these tools are just running the same git branch, git switch, and git push commands for you.
Common Branch Types and Naming Patterns
The way you use branches depends on your workflow, but some patterns show up almost everywhere:
| Branch Type | Typical Name | Purpose |
|---|---|---|
| Main branch | main or master | Stable code, releases, production-ready |
| Feature branch | feature/login-form | New features or big changes |
| Bugfix/Hotfix | bugfix/payment-timeout | Quick fixes for specific issues |
| Release branch | release/2.0.0 | Preparing a release (stabilization) |
| Experiment branch | experiment/new-cache | Trying ideas that may never merge |
Teams often use prefixes (like feature/, bugfix/) so it’s easier to search and organize.
What Variables Affect How You Create and Use Branches?
Creating a branch uses the same small set of commands, but how you work with branches varies with your setup. A few key variables:
1. Git Version and Command Preference
- Newer Git versions support
git switchandgit restore. - Older Git versions only have
git checkoutfor switching and creating branches.
If you see examples using git switch and your Git complains, your version might be older, and you’ll use git checkout -b instead.
2. Local vs Remote Workflow
Your branching habits shift depending on:
- Whether you work alone or in a team
- Whether you sync with a remote or stay local-only
For example:
- Solo project, no remote:
- You might keep branches simple and short-lived.
- Team on GitHub / GitLab:
- You’ll likely:
- Push branches to
origin - Open pull/merge requests
- Follow team naming conventions
- Push branches to
- You’ll likely:
3. Development Style and Branching Strategy
Different workflows change how and when you branch:
- Trunk-based development:
- Small, short-lived branches
- Frequent merges into
main
- GitFlow-style:
- Dedicated
develop,release, and hotfix branches - Longer-lived branches for major stages
- Dedicated
- Lightweight feature branching:
- One main branch plus many small feature branches
Each style affects:
- How often you create branches
- How long they live
- How often you merge or rebase
4. Tooling: CLI vs IDE vs GUI
- Command line users:
- Have fine-grained control and can script workflows.
- IDE/Git GUI users:
- Might rely on buttons and menus for branching, merging, and viewing history.
The underlying Git mechanics are the same, but the experience of creating a branch feels different depending on tools.
5. Team Rules and Permissions
In shared repositories:
- Some branches (like
main) may be protected:- You can’t push directly.
- You must use pull requests from feature branches.
- There may be rules about:
- Who can create branches
- Required reviews before merging
- Which branch to base new work on
These rules don’t change the Git commands themselves but do change which branches you’re allowed or expected to create.
How Different Users Might Use Git Branching
Different setups and skill levels lead to different branching habits.
Beginners and Small Solo Projects
Typical pattern:
- One main branch (
main) - Occasional feature branch for bigger changes:
git switch -c try-new-layout- Make changes, test
- Merge back into
mainor just keep the branch
Focus is often on not breaking the only working version of the project.
Intermediate Users and Small Teams
More structured:
- Consistent branch naming (
feature/…,bugfix/…) - Regular push to remote branches:
git push -u origin feature/login
- Pull/merge requests for code review
Branches are communication tools as much as technical ones: they show what’s being worked on and why.
Larger Teams and Long-Lived Projects
Branches often mirror process:
- Long-running branches:
mainfor production codedevelopfor ongoing integration
- Supporting branches:
release/x.y.zfor preparing releaseshotfix/critical-bugfor urgent fixes
Branching rules can be tied to CI/CD pipelines, code owners, and automated tests.
Power Users and Advanced Workflows
You may see:
- Branches from specific tags or commits for:
- Backporting fixes
- Reproducing old behavior
- Heavy use of:
git rebasegit cherry-pick
- Very short-lived branches created and deleted frequently
Here branching is part of an optimized flow, tuned to their particular project and deployment style.
Where Your Own Situation Fits In
The core steps to create a branch in Git are straightforward:
git switch -c new-branchorgit checkout -b new-branch- Optionally
git push -u origin new-branchif you use a remote
Everything around those commands—when you branch, from which commit, how you name branches, and how long they live—depends on your own:
- Project size and complexity
- Solo vs team development
- Tools you prefer (CLI, IDE, GUI)
- Existing or desired workflow (trunk-based, GitFlow, lightweight feature branching)
- Any rules or protections on your main branches
Once you know the basic commands, the next step is looking at your own setup, how you collaborate, and how cautious you need to be with changes. That context is what ultimately shapes how you’ll use Git branches day to day.