Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/project/repository/forking_workflow.md')
-rw-r--r--doc/user/project/repository/forking_workflow.md73
1 files changed, 65 insertions, 8 deletions
diff --git a/doc/user/project/repository/forking_workflow.md b/doc/user/project/repository/forking_workflow.md
index fae6e210a6c..f6c5ef20c82 100644
--- a/doc/user/project/repository/forking_workflow.md
+++ b/doc/user/project/repository/forking_workflow.md
@@ -37,19 +37,71 @@ To fork an existing project in GitLab:
GitLab creates your fork, and redirects you to the new fork's page.
-## Repository mirroring
+## Update your fork
-You can use [repository mirroring](mirror/index.md) to keep your fork synced with the original repository. You can also use `git remote add upstream` to achieve the same result.
+To copy the latest changes from the upstream repository into your fork, update it
+from the command line. GitLab Premium and higher tiers can also
+[configure forks as pull mirrors](mirror/pull.md#configure-pull-mirroring)
+of the upstream repository.
-The main difference is that with repository mirroring, your remote fork is automatically kept up-to-date.
+### From the command line
-Without mirroring, to work locally you must use `git pull` to update your local repository
-with the upstream project, then push the changes back to your fork to update it.
+To update your fork from the command line, first ensure that you have configured
+an `upstream` remote repository for your fork:
-WARNING:
-With mirroring, before approving a merge request, you are asked to sync. We recommend you automate it.
+1. Clone your fork locally, if you have not already done so. For more information, see
+ [Clone a repository](../../../gitlab-basics/start-using-git.md#clone-a-repository).
+1. View the remotes configured for your fork with `git remote -v`.
+1. If your fork does not have an `upstream` remote pointing to the original repository,
+ use one of these examples to configure an `upstream` remote:
+
+ ```shell
+ # Use this line to set any repository as your upstream after editing <upstream_url>
+ git remote add upstream <upstream_url>
+
+ # Use this line to set the main GitLab repository as your upstream
+ git remote add upstream https://gitlab.com/gitlab-org/gitlab.git
+ ```
+
+ After ensuring your fork has an `upstream` remote configured, you are ready to update your fork.
+
+1. In your local copy, ensure you have checked out the [default branch](branches/default.md),
+ replacing `main` with the name of your default branch:
+
+ ```shell
+ git checkout main
+ ```
+
+ If Git identifies unstaged changes, commit or stash them before continuing.
+1. Fetch the changes to the upstream repository with `git fetch upstream`.
+1. Pull the changes into your fork, replacing `main` with the name of the branch
+ you are updating:
+
+ ```shell
+ git pull upstream main
+ ```
+
+1. Push the changes to your fork repository on the server (GitLab.com or self-managed).
-Read more about [How to keep your fork up to date with its origin](https://about.gitlab.com/blog/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/).
+ ```shell
+ git push origin main
+ ```
+
+### With repository mirroring **(PREMIUM)**
+
+A fork can be configured as a mirror of the upstream if all these conditions are met:
+
+1. Your subscription is **(PREMIUM)** or a higher tier.
+1. You create all changes in branches (not `main`).
+1. You do not work on [merge requests for confidential issues](../merge_requests/confidential.md),
+ which requires changes to `main`.
+
+[Repository mirroring](mirror/index.md) keeps your fork synced with the original repository.
+This method updates your fork once per hour, with no manual `git pull` required.
+For instructions, read [Configure pull mirroring](mirror/pull.md#configure-pull-mirroring).
+
+WARNING:
+With mirroring, before approving a merge request, you are asked to sync. You should automate it.
## Merging upstream
@@ -69,3 +121,8 @@ changes are added to the repository and branch you're merging into.
## Removing a fork relationship
You can unlink your fork from its upstream project in the [advanced settings](../settings/index.md#remove-a-fork-relationship).
+
+## Related topics
+
+- GitLab blog post: [How to keep your fork up to date with its origin](https://about.gitlab.com/blog/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/).
+- GitLab community forum: [Refreshing a fork](https://forum.gitlab.com/t/refreshing-a-fork/).