Data report"State of code review 2024" is now liveRead the full report

Git fork vs branch

Greg Foster
Greg Foster
Graphite software engineer


Note

This guide explains this concept in vanilla Git. For Graphite documentation, see our CLI docs.


This guide aims to clarify the differences and uses of forks and branches in Git, helping you to decide whether to fork or branch depending on your specific development needs.

A branch in Git is essentially a pointer to a collection of commits, a snapshot of code-changes. When you create a branch, you diverge from the main line of development, enabling you to work on new features or fixes without affecting the main codebase. The default branch in Git is typically called "main".

Imagine you have a project that’s in production, and you need to work on a new feature. You can create a branch from the main branch and have a clean slate to implement your changes. This way, the main branch remains stable and unaffected by the new development.

Here’s a basic example of creating and switching to a new branch from the terminal:

Terminal
git branch new-feature # Create a new branch named 'new-feature'
git checkout new-feature # Switch to the 'new-feature' branch

This set of commands first creates a new branch called new-feature and then with git checkout switches the working directory to this branch, isolating your work from the main branch. From here you can make changes, test, and build your codebase without affecting the code that live in the main branch of the repo.

Once you are satisfied with the state of this feature, you can then merge these changes back into the main branch.

A fork is a copy of an entire repository that allows you to freely experiment with changes without affecting the original project. Forking is often used in open-source projects to allow contributors to make modifications before proposing to merge these changes back into the main project.

When you fork a repository, you make an entirely separate copy of the project under your own account. This is useful when you don’t have write access to the original repository and want to propose changes to it. After forking, you can clone your fork locally, make your changes, and eventually submit a pull request to the original repository.

To illustrate, if you want to contribute to an open-source project, you might start by forking it:

  1. Go to the GitHub page of the project.
  2. Click on the "Fork" button at the top right, which creates your copy of the project. screenshot of the fork button on GitHub
  3. Clone your fork locally with git clone and start making changes.
  • Scope of isolation: Branches are isolated within the same repository, allowing easier collaboration among team members who have access to the repository. Forks, on the other hand, create a completely separate copy of the repository, which is useful for outside contributors.
  • Access and permissions: Branching is suitable when team members have write access to a repository and need to implement or experiment with features independently. Forking is preferable when contributors do not have direct write access to the project’s repository.
  • Integration process: Changes from a branch are usually merged back into the main branch through a pull request within the same repository. In contrast, changes from a fork require a pull request to the original external repository.
  • Use a branch when:

    • You have write access to the repository.
    • You want to make quick fixes or develop features collaboratively within the same project.
    • You aim to frequently synchronize your code with the main project.
  • Use a fork when:

    • You don’t have write access to the repository and want to suggest changes.
    • You want to maintain a separate project based on the original project or use it as a starting point.
    • You are contributing to an open-source project and need to handle your changes independently before merging them.

For further reading see the official documentation on forking and branching.

Stay unblocked. Ship faster.
Experience the new developer workflow - create, review, and merge code continuously. Get started with one command.
Learn more

Give your PR workflow
an upgrade today

Stack easier | Ship smaller | Review quicker

Or install our CLI.
Product Screenshot 1
Product Screenshot 2