Working with Branches in Git

Summary: Create, switch, and delete branches effectively.


Version control is an essential skill for any developer, and Git stands out as the leading system for tracking and managing changes in your codebase. One of the most powerful features Git offers is branching. With branches, you can work on new features, bug fixes, or experiments in isolation from the main codebase. This article guides you through the core operations: creating, switching, and deleting branches in Git.

Why Use Branches?

Branches let you:

  • Work on multiple features or fixes without interfering with the main codebase.
  • Experiment freely and safely.
  • Collaborate with teams on different parts of a project.
  • Integrate changes when they are ready.

When you understand how to use branches, you can develop with confidence, knowing your main production code is stable while you innovate.


Creating Branches

Creating a branch in Git is straightforward. A branch is simply a pointer to a specific commit in your repository’s history.

How to Create a New Branch

Open your terminal and navigate to your project directory. Use:

git branch branch-name

This creates a new branch named branch-name based on your current HEAD (usually the latest commit in your current branch). However, you'll still be on your original branch after running this command.

Shortcut: Create and switch to a new branch in one step:

git checkout -b branch-name

Or, with newer versions of Git (2.23+):

git switch -c branch-name

Switching Between Branches

Working with branches means you’ll need to switch context often. To move from one branch to another, use the following command:

git checkout branch-name

With newer Git versions:

git switch branch-name

What happens when you switch? Git updates your working directory to match the files at the tip of the branch you just checked out. Make sure your changes are committed or stashed before switching; otherwise, Git may prevent the switch to avoid losing work.


Listing All Branches

To see which branches exist in your repository:

git branch

Output example:

  feature-login
* main
  bugfix-navbar

The asterisk (*) indicates the branch you’re currently on.


Deleting Branches

Once a branch has served its purpose—perhaps its changes have been merged—you may want to delete it to keep your repository tidy.

Delete a Local Branch

To delete a branch from your local repository:

git branch -d branch-name
  • Use -d for a “safe delete.” Git won’t remove the branch if it hasn’t been merged.
  • Use -D (uppercase) to force deletion, even if the branch contains unmerged changes (be careful!).

Delete a Remote Branch

To delete a branch from a remote (like GitHub or GitLab):

git push origin --delete branch-name

This tells the remote to remove the specified branch.


Practical Workflow Example

Let’s tie it all together:

  1. Create a branch for a new feature:

    git checkout -b feature/contact-form
    
  2. Work on your changes, then commit:

    git add .
    git commit -m "Add contact form feature"
    
  3. Switch back to the main branch:

    git checkout main
    
  4. Merge your feature branch (once tested):

    git merge feature/contact-form
    
  5. Delete the old feature branch:

    git branch -d feature/contact-form
    

Tips for Effective Branch Management

  • Use descriptive branch names: Like feature/homepage-redesign or bugfix/footer-links.
  • Keep branches short-lived: Merge often to avoid complicated conflicts.
  • Pull the latest changes: Before creating or merging branches, make sure you have the latest version from your main branch.
  • Avoid unnecessary branches: Delete old or obsolete branches, especially on the remote.

Conclusion

Branches are a foundational part of effective version control in Git. They allow developers to create, switch, and delete contexts for changes in a controlled and collaborative way. By mastering these branch operations, you can streamline your development workflow, experiment fearlessly, and keep your codebase clean and organized.

Now that you know how to create, switch, and delete branches, put that knowledge to use—and unlock Git’s full power for your projects!


Further Reading