Update a fork
A fork is a personal copy of the repository and all its branches, which you create in a namespace of your choice. You can use forks to propose changes to another project that you don’t have access to. For more information, see Forking workflows.
This page describes how to update a fork using Git commands from your command line and how to collaborate across forks.
You can also update a fork with the GitLab UI.
Prerequisites:
- You must download and install the Git client on your local machine.
- You must create a fork of the repository you want to update.
To update your fork from the command line:
-
Check if an
upstream
remote repository is configured for your fork:- Clone your fork locally, if you haven’t already. For more information, see Clone a repository.
-
View the configured remotes for your fork:
git remote -v
-
If your fork doesn’t have a remote pointing to the original repository, use one of these examples to configure a remote called upstream:
# Set any repository as your upstream after editing <upstream_url> git remote add upstream <upstream_url> # Set the main GitLab repository as your upstream git remote add upstream https://gitlab.com/gitlab-org/gitlab.git
-
Update your fork:
-
In your local copy, check out the default branch. Replace
main
with the name of your default branch:git checkout main
If Git identifies unstaged changes, commit or stash them before continuing. -
Fetch the changes from the upstream repository:
git fetch upstream
-
Pull the changes into your fork. Replace
main
with the name of the branch you’re updating:git pull upstream main
-
Push the changes to your fork repository on the server:
git push origin main
-
Collaborate across forks
GitLab enables collaboration between the upstream project maintainers and the fork owners. For more information, see:
Push to a fork as an upstream member
You can push directly to the branch of the forked repository if:
- The author of the merge request enabled contributions from upstream members.
- You have at least the Developer role for the upstream project.
In the following example:
- The forked repository URL is
git@gitlab.com:contributor/forked-project.git
. - The branch of the merge request is
fork-branch
.
To change or add a commit to the contributor’s merge request:
- On the left sidebar, select Search or go to and find your project.
- Go to Code > Merge requests and find the merge request.
- In the upper-right corner, select Code, then select Check out branch.
- On the dialog, select Copy ().
-
In your terminal, go to the cloned version of the repository, and paste the commands. For example:
git fetch "git@gitlab.com:contributor/forked-project.git" 'fork-branch' git checkout -b 'contributor/fork-branch' FETCH_HEAD
These commands fetch the branch from the forked project and create a local branch for you to work on.
- Make your changes to the local copy of the branch, and then commit them.
-
Push your local changes to the forked project. The following command pushes the local branch
contributor/fork-branch
to thefork-branch
branch of thegit@gitlab.com:contributor/forked-project.git
repository:git push git@gitlab.com:contributor/forked-project.git contributor/fork-branch:fork-branch
If you’ve amended or squashed any commits, you must use
git push --force
. Proceed with caution as this command rewrites the commit history.git push --force git@gitlab.com:contributor/forked-project.git contributor/fork-branch:fork-branch
The colon (
:
) specifies the source branch and the destination branch. The scheme is:git push <forked_repository_git_url> <local_branch>:<fork_branch>