Update a fork
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
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.
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 ({copy-to-clipboard}).
-
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>