The Wayback Machine - https://web.archive.org/web/20240619114103/https://www.geeksforgeeks.org/git-fork/
Open In App

Git – Fork

Last Updated : 15 May, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Forking a repository means creating a copy of the repo. When you fork a repo, you create your own copy of the repo on your GitHub account. When several developers want to work on a project but need to make changes that are inappropriate for the original repository, forking is frequently used in open-source software development.

In this article, we will learn more about Git-Fork and its uses.

What is Git Fork?

In Git, a fork refers to a personal copy of another user’s repository. When you fork a repository, you create an independent copy that exists within your own account or organization. This copy includes all the files, commit history, and branches present in the original repository at the time of forking.

Reasons For Forks 

  • You have your own copy of the project on which you may test your own changes without changing the original project.
  • This helps the maintainer of the project to better check the changes you made to the project and has the power to either accept, reject or suggest something.
  • When you clone an Open-Source project, that isn’t yours, you don’t have the right to push code directly into the project. 

Steps to Forking A Repository 

Step 1: Open the repository that you want to Fork there You can see the icon as shown in the image below in the repo’s top right corner. Now, this feature is used to Fork the repo.

Fork

Git Fork

Step 2: Go to any repository that you want to Fork here we are using a sample repo of Python official repository. 

Python repository

Git Repo

You can see python/cpython. This means python is the maintainer and cpython is the project’s name.  

Step 3: Find the Fork button in the top right corner.

Fork Repo

Fork button

Step 4: Click on Fork

Forking the Repo

Forking a repo

Step 5: Now you have your own copy of the repository. But how can we confirm for which do refer to below visual aid as follows:

Copy of Repo

 

Now we can see your user name(**********)/CPython and also below that, we have the link to the original project I forked from. 

Whatever changes are made to ‘******/python? We can make my changes here and then make a Pull Request to the maintainers of the project. Now it is in their hand if they will accept or reject your changes to the main project.

Fork Using Command Line

 Step 1: Open the terminal or gitbash and type the below command.

gh --version 

If it displays the version like in the image below, then the GitHub ClI was already set up on our computer. If not, use this link to set it up. “https://cli.github.com/”

gh --version

GitBash Version

Step 2: You must first log in using the CLI to GitHub using your GitHub account before you may fork the repositories. To do it, issue the following command.

gh auth login --web > SSH

Open the CLI-provided link, then enter your one-time code in the Chrome browser. 

gh auth login

 

Step 3: Once authentication is done. Copy the Repo URL that you to fork into our repo and use the below command.

gh repo fork <REPO URL> --clone
gh repo fork

Fork the repo

— clone is used to get rid of the hurdles in between Fork. That is how we may use the CLI to fork the repository.

Difference between Git Fork vs Git Clone 

Fork

Clone 

To enable independent development without impacting the original repository, a fork is a duplicate of a repository that has been made.

Cloning a repository entails making a local duplicate of an already-existing, remotely hosted Git repository.

When you fork a repository, a new copy of the repository is created under your own account enabling you to experiment and edit as necessary.

A repository is completely duplicated when it is cloned, including all of its files, history, and metadata.

A forking operation produces a fresh, independent copy of the repository that belongs to the forking user and is commonly carried out on a Git hosting service like GitHub or GitLab.

Cloning is commonly carried out via the Git command line on a local system, and it produces an isolated, complete copy of the repository that may be edited and committed locally.

How To Decide Between Git Clone And Fork?

It is advised to utilize “git clone” if you are employed by an organization as a developer and you wish to make contributions to the source code., which is better suited for the “git push and git pull” operations via which other developers can view and validate the code.

Use “git fork” so other developers can’t access or follow your progress if you wish to construct another project in isolation using existing source code as a base.

Configuring Git To Sync Your Fork with the Upstream Repository 

You must carry out the following actions to set up Git to sync your fork with the upstream repository:

Step 1: Clone your fork repository

Clone the repository that you forked to the directory where you want to store the repository by using the following command.

git clone <Repository URL>

Step 2: Add the upstream remote

Know to Add the upstream repository as a remote to your fork repository. By using the following command we can do this.

cd <forkrepo>
git remote add upstream <Repository URL>

Step 3: Fetch the upstream branches

Use the Git fetch command and fetch the branch required from the upstream repository.

git fetch upstream

Step 4: Add the upstream changes to your local branch

Switch the branch you want to update by using the following command.

git checkout main

Know to merge the branches which are fetched from upstream by using the below command.

Git merge upstream/main

Step 5: Push the changes to your fork repository

 With the help of the following command, we can push the changes to your fork repository.

Git Push

Now that your fork repository and the upstream repository are in sync, you can add changes to your fork as necessary.

Conclusion

In this article we covered the differences between a git fork and a git clone, how to set up git to sync your fork with the upstream repository, and how to fork a repository from GitHub using the GUI and CLI using a sample repository and step-by-step instructions with screenshots.



Previous Article
Next Article

Similar Reads

Difference Between Git remote prune, Git prune and Git fetch --prune
Git is a version control system that helps developers manage and track changes in their codebase. Among its many commands, git remote prune, git prune, and git fetch --prune are essential for maintaining a clean and organized repository. This article will explain the differences between these commands, their syntax, uses, and provide examples to il
4 min read
Difference between “git add -A” and “git add”
Git is a free and open-source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. It is basically, software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Featu
3 min read
Git - Difference Between Git Revert, Checkout and Reset
While Working with Git in certain situations we want to undo changes in the working area or index area, sometimes remove commits locally or remotely and we need to reverse those changes. There are 3 different ways in which we can undo the changes in our repository, these are git reset, git checkout, and git revert. git checkout and git reset in fac
7 min read
Git - git-show Command Line Utility
Git is a free and open-source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git relies on the basis of distributed development of software where more than one developer may have access to the source code of a specific application and can modify changes to it that may be
3 min read
Git LFS: Managing Large Files in Git Repositories
Git, undoubtedly one of the most popular version control systems, is widely used for managing source code in software development projects. However, one of its limitations is its handling of large files. Traditional Git repositories struggle to efficiently manage large files, leading to bloated repositories and slow performance. This is where Git L
4 min read
Git Subtree vs. Git Submodule
Git Subtree and Git Submodule are both mechanisms in Git that allow you to incorporate external repositories into your own repository. They provide a way to manage dependencies and include code from other projects while keeping your repository organized and maintainable. Git Subtree: Git Subtree allows you to insert a separate repository as a subdi
4 min read
Difference Between Git Fetch and Git Pull
Understanding the difference between git fetch and git pull is important for effective version control in Git. These commands are important for managing your repository and collaborating with team members. In this article, Let us look at Git Fetch and Git Pull separately with the help of an example. What is Git Fetch?The Git Fetch command is used t
4 min read
Difference Between Git Push Origin and Git Push Origin Master
Understanding the difference between git push origin and git push origin master is important for efficient version control in Git. These commands are used to upload changes from your local repository to a remote repository, but they function differently. This article will explain these differences, how each command works, and when to use them. What
3 min read
How to Set Up Git Using Git Config?
Git is a powerful version control system that helps developers manage and track changes in their code. Setting up Git correctly is important for maintaining an organized and efficient workflow. In this article, we'll walk you through the process of setting up Git using the git config command. PrerequisitesBefore we dive into the setup process, make
3 min read
Git - git prune
In version control systems, Git has powerful features and flexibility. However, as projects evolve and repositories grow, managing Git's internal database becomes important. Enter git prune, a command designed to help you keep your repository lean and clean by removing unreachable or dangling objects. In this article, we'll explore the git prune co
5 min read
Article Tags :