Software Development

Branch or fork your repository Bitbucket Cloud

A team sees a codebase that could be a good starting point for their project, and they have no intention of trying to merge this back into the root codebase. Unforking in GitHub is not a common operation and requires the direct assistance of the GitHub support team. You will need to visit the GitHub Support Request page and select the “Attach, detach or reroute forks” option. The virtual assistant will guide you through the rest of the process. A Git branch is a way to safely make a new set of commits within the same copy of a project, without making changes to the main branch until you’re ready.

It’s extremely common to see forks used in conjunction with pull requests to allow people to collaborate on a project which don’t all have permissions to modify a given repository directly. When you cloned the forked repository onto your local computer, git automatically added a remote repository named “origin” pointing to the forked repository on GitHub. This means that when you do git add/git commit/git push you can push your local changes to the forked repository.

When we create a repository, the main branch is created. You’re unlikely to be able to push directly to the main project’s repository. I’m not sure if GitHub project’s repository support branch-based access control, as you wouldn’t want to grant anyone the permission to push to the master branch for example. Clicking the fork button in GitHub, or any other host that allows for forking, completes a git clone command and creates a new origin/master. To copy the latest changes from the upstream repository into your fork, update it from the command line.

In the “base branch” drop-down menu, select the branch of the upstream repository you’d like to merge changes into. I thought I might use branches for this, but considering this question and its answer, it’s not good practice to do so in terms of versioning. As far as I’ve found out, forking your own repository is not possible.

git fork vs branch

The crucial part is that I want the two versions to stay in my repository. Software Engineering Stack Exchange is a question and answer site for professionals, academics, and students working within the systems development life cycle. @RecoJohnson You as a contributor push to your GitHub fork; the project’s maintainers pull your contribution from your fork. If you have a lot of abandoned branches, it’s a good idea to establish a procedure for deliberately abandoning a branch.


If not double click on master to make it the active branch. You may have to commit all the current changes before you can switch branches. This will fetch all the changes from the “upstream” repository and put them in the LOCAL repository.

If in the OP’s question, “core” were identical in both trees, having both a “simple” and “advanced” wrapper around core, then this answer is at least reasonable. To me it seems that you need two Repositories not two Branches. A branch is a mechanism to handle the changes within a single repository in order to eventually merge them with the rest of code. Fork the original project’s repository to have your own GitHub copy, to which you’ll then be allowed to push changes.

  • For example, checking that the code still passes a number of pre-written tests, that the documentation still renders, etc.
  • A developer who wants to set up a new, separate and isolated project that is based on a publicly accessible Git repo should perform a fork.
  • The choice between a Git fork or clone comes down to how much control you need over the codebase, along with how collaboratively you want to work with other contributors.
  • First, you need to add a second remote that refer to the original master repository.

This connection allows downstream copies to suggest changes to the upstream repository through use of GitHub pull requests. A simple summary of how to collaborate on open-source projects using forking, branching and pull requests. So, for example, I am a member of the Atom organization. When I want to suggest a change to anything in the Atom project, I create a branch locally, work on my changes, then push the branch to the GitHub-hosted repo, and open a pull request. However, I am not a member of the Kubernetes organization. If I wanted to suggest a change to something in the Kubernetes project, I would create a fork.

While forking and cloning a GitHub repository both do make a copy of the original repository, it’s important to note the key differences in these concepts. Cloning a repository creates a local copy of the repo and automatically sets a Git remote to that repository on GitHub. If the project is owned by someone else, you won’t be able to push any changes back to that original repository. Creating a pull request to the main repository starts by creating a local branch for your work and pushing this branch to your GitHub fork.

Git fork vs. clone: What’s the difference?

Forks can be a really good pattern for ‘public’ collaboration and experimentation, but when the intended use case is many people working toward a unified goal, branching tends to be a better fit. A unique danger of a fork-centric workflow, is if a developer works in isolation on their own repo. Although not always the case, it presents a slightly increased risk profile for certain situations, like if the developer leaves the company or is temporarily unavailable.

@Varaquilex Way would you need to keep both versions in a single repository? Also forking a repository will create a new repository in your account. I’d like to know more about the advantages and disadvantages of forking a github project vs. creating a branch of a github project. To create a branch, use git checkout -b new-branch which creates a new branch from the origin of your current repository. Changes can still occur onwhile you are working on your new-branch .

git fork vs branch

Branches are used to develop a different and distinct line of development in the project to fix a bug or add a new feature. The Master branch is the default or primary branch in Git. The branch in Git is referred to as the distinct and latest form of the main repository. It’s the killer feature of Git that is very flexible and easy to use. Many public projects have you fork the project to keep the working changes out of the main project. Why not just have one version that can run in simple mode or advanced mode?

We’re developing a project in house and there is no problem in adding people as collaborators. But, we’d like to understand if forking a project would make merging changes back to the main project harder. How do you create an organization that is nimble, flexible and takes a fresh view of team structure? These are the keys to creating and maintaining a successful business that will last the test of time. A branch-centric workflow makes sense for most business settings.

Working with a Forked Repository in GitHub

GitLab Premium and higher tiers can alsoconfigure forks as pull mirrorsof the upstream repository. Forking a repository is to observe changes in the project without infecting the original project. The reasons why forking could be beneficial are listed below. Forking proposes changes to other developers’ projects.

git fork vs branch

Forks will inherently take up more space on your server. Today, Linux has many forks (i.e RedHat), all stemming from a shared historical baseline. Why should I see your branches when I work and vice versa? If there are five people working on the same project, and they Cross-Platform Mobile Development each have four branches, that’s 22 branches . This company has many repositories, so this comes up A LOT. But if there’s a good reason I can adapt rather than pushing to change it. I can’t seem to find any benefit to this for the amount of additional complexity.

GitHub Clone vs Fork

Previous contributors will have no means with which they can contribute to or synchronize with the Git fork unless the developer who performed the fork operation provides access to them. To create a pull request that is ready for review, click Create Pull Request. To create a draft pull request, use the drop-down and select Create Draft Pull Request, then click Draft Pull Request.

Bitbucket Support

If you branched a repository, you clone the repository and checkout the branch. The term fork derives from a Unix system call that creates a copy of an existing process. So, unlike a branch, a fork is independent from the original repository. How To Install Python On Chromebook If the original repository is deleted, the fork remains. If you fork a repository, you get that repository and all of its branches. There’s no reason to be using “forks” in the context of a local/private development team.

Now you have a copy of the repository in your GitHub account. Once there, click the Fork button in the upper right hand side of the repository’s GitHub page. First, navigate to the Git repository you want to fork on When I first started Best Books to Learn Front-End Web Development using git about 12 years ago, I used it like you want to – everyone worked in the same fork, the main fork. At this point you should already be up-to-date with the main repository. Try GitLab for freewith access to all features for 30 days.

Contact the project’s maintainers and ask them to fetch your changes and review/merge, and let them push back to the project’s repository . Branching and forking provide two ways of diverging from the main code line. Both Mercurial and Git have the concept of branches at the local level. A repository code branch, like a branch of a tree, remains part of the original repository. The code that is branched and the branch know and rely on each other.