@@ -21,11 +21,11 @@ GET /projects/:id/repository/commits
...
@@ -21,11 +21,11 @@ GET /projects/:id/repository/commits
| --------- | ---- | -------- | ----------- |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
| `ref_name` | string | no | The name of a repository branch, tag or revision range, or if not given the default branch |
| `ref_name` | string | no | The name of a repository branch, tag or revision range, or if not given the default branch |
| `since` | string | no | Only commits after or on this date will be returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ |
| `since` | string | no | Only commits after or on this date are returned in ISO 8601 format `YYYY-MM-DDTHH:MM:SSZ` |
| `until` | string | no | Only commits before or on this date will be returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ |
| `until` | string | no | Only commits before or on this date are returned in ISO 8601 format `YYYY-MM-DDTHH:MM:SSZ` |
| `path` | string | no | The file path |
| `path` | string | no | The file path |
| `all` | boolean | no | Retrieve every commit from the repository |
| `all` | boolean | no | Retrieve every commit from the repository |
| `with_stats` | boolean | no | Stats about each commit will be added to the response |
| `with_stats` | boolean | no | Stats about each commit are added to the response |
| `first_parent` | boolean | no | Follow only the first parent commit upon seeing a merge commit |
| `first_parent` | boolean | no | Follow only the first parent commit upon seeing a merge commit |
| `order` | string | no | List commits in order. Possible values: `default`, [`topo`](https://git-scm.com/docs/git-log#Documentation/git-log.txt---topo-order). Defaults to `default`, the commits are shown in reverse chronological order. |
| `order` | string | no | List commits in order. Possible values: `default`, [`topo`](https://git-scm.com/docs/git-log#Documentation/git-log.txt---topo-order). Defaults to `default`, the commits are shown in reverse chronological order. |
...
@@ -101,9 +101,9 @@ POST /projects/:id/repository/commits
...
@@ -101,9 +101,9 @@ POST /projects/:id/repository/commits
| `action` | string | yes | The action to perform, `create`, `delete`, `move`, `update`, `chmod`|
| `action` | string | yes | The action to perform, `create`, `delete`, `move`, `update`, `chmod`|
| `file_path` | string | yes | Full path to the file. Ex. `lib/class.rb` |
| `file_path` | string | yes | Full path to the file. Ex. `lib/class.rb` |
| `previous_path` | string | no | Original full path to the file being moved. Ex. `lib/class1.rb`. Only considered for `move` action. |
| `previous_path` | string | no | Original full path to the file being moved. Ex. `lib/class1.rb`. Only considered for `move` action. |
| `content` | string | no | File content, required for all except `delete`, `chmod`, and `move`. Move actions that do not specify `content`will preserve the existing file content, and any other value of `content` will overwrite the file content. |
| `content` | string | no | File content, required for all except `delete`, `chmod`, and `move`. Move actions that do not specify `content`preserve the existing file content, and any other value of `content` overwrites the file content. |
| `encoding` | string | no | `text` or `base64`. `text` is default. |
| `encoding` | string | no | `text` or `base64`. `text` is default. |
| `last_commit_id` | string | no | Last known file commit ID. Will be only considered in update, move, and delete actions. |
| `last_commit_id` | string | no | Last known file commit ID. Only considered in update, move, and delete actions. |
| `execute_filemode` | boolean | no | When `true/false` enables/disables the execute flag on the file. Only considered for `chmod` action. |
| `execute_filemode` | boolean | no | When `true/false` enables/disables the execute flag on the file. Only considered for `chmod` action. |
```shell
```shell
...
@@ -333,7 +333,7 @@ Example response:
...
@@ -333,7 +333,7 @@ Example response:
}
}
```
```
In the event of a failed cherry-pick, the response will provide context about
In the event of a failed cherry-pick, the response provides context about
why:
why:
```json
```json
...
@@ -348,9 +348,9 @@ indicates that the commit already exists in the target branch. The other
...
@@ -348,9 +348,9 @@ indicates that the commit already exists in the target branch. The other
possible error code is `conflict`, which indicates that there was a merge
possible error code is `conflict`, which indicates that there was a merge
conflict.
conflict.
When `dry_run` is enabled, the server will attempt to apply the cherry-pick _but
When `dry_run` is enabled, the server attempts to apply the cherry-pick _but
not actually commit any resulting changes_. If the cherry-pick applies cleanly,
not actually commit any resulting changes_. If the cherry-pick applies cleanly,
the API will respond with `200 OK`:
the API responds with `200 OK`:
```json
```json
{
{
...
@@ -358,7 +358,7 @@ the API will respond with `200 OK`:
...
@@ -358,7 +358,7 @@ the API will respond with `200 OK`:
}
}
```
```
In the event of a failure, you'll see an error identical to a failure without
In the event of a failure, an error displays that is identical to a failure without
dry run.
dry run.
## Revert a commit
## Revert a commit
...
@@ -404,7 +404,7 @@ Example response:
...
@@ -404,7 +404,7 @@ Example response:
}
}
```
```
In the event of a failed revert, the response will provide context about why:
In the event of a failed revert, the response provides context about why:
```json
```json
{
{
...
@@ -417,9 +417,9 @@ In this case, the revert failed because the attempted revert generated a merge
...
@@ -417,9 +417,9 @@ In this case, the revert failed because the attempted revert generated a merge
conflict. The other possible error code is `empty`, which indicates that the
conflict. The other possible error code is `empty`, which indicates that the
changeset was empty, likely due to the change having already been reverted.
changeset was empty, likely due to the change having already been reverted.
When `dry_run` is enabled, the server will attempt to apply the revert _but not
When `dry_run` is enabled, the server attempts to apply the revert _but not
actually commit any resulting changes_. If the revert applies cleanly, the API
actually commit any resulting changes_. If the revert applies cleanly, the API
will respond with `200 OK`:
responds with `200 OK`:
```json
```json
{
{
...
@@ -427,7 +427,7 @@ will respond with `200 OK`:
...
@@ -427,7 +427,7 @@ will respond with `200 OK`:
}
}
```
```
In the event of a failure, you'll see an error identical to a failure without
In the event of a failure, an error displays that is identical to a failure without
dry run.
dry run.
## Get the diff of a commit
## Get the diff of a commit
...
@@ -511,7 +511,7 @@ In order to post a comment in a particular line of a particular file, you must
...
@@ -511,7 +511,7 @@ In order to post a comment in a particular line of a particular file, you must
specify the full commit SHA, the `path`, the `line` and `line_type` should be
specify the full commit SHA, the `path`, the `line` and `line_type` should be
`new`.
`new`.
The comment will be added at the end of the last commit if at least one of the
The comment is added at the end of the last commit if at least one of the
cases below is valid:
cases below is valid:
- the `sha` is instead a branch or a tag and the `line` or `path` are invalid
- the `sha` is instead a branch or a tag and the `line` or `path` are invalid
@@ -15,7 +15,7 @@ Discussions are a set of related notes on:
...
@@ -15,7 +15,7 @@ Discussions are a set of related notes on:
- Merge requests
- Merge requests
- Commits
- Commits
This includes system notes, which are notes about changes to the object (for example, when a milestone changes, there will be a corresponding system note). Label notes are not part of this API, but recorded as separate events in [resource label events](resource_label_events.md).
This includes system notes, which are notes about changes to the object (for example, when a milestone changes, a corresponding system note is added). Label notes are not part of this API, but recorded as separate events in [resource label events](resource_label_events.md).
| `id` | integer or string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) which the authenticated user is a member of |
| `id` | integer or string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) which the authenticated user is a member of |
| `finding_id` | integer or string | yes | The ID of a Vulnerability Finding from which the new Vulnerability will be created |
| `finding_id` | integer or string | yes | The ID of a Vulnerability Finding to create the new Vulnerability from |
The other attributes of a newly created Vulnerability are populated from
The other attributes of a newly created Vulnerability are populated from
its source Vulnerability Finding, or with these default values:
its source Vulnerability Finding, or with these default values:
For security reasons, the `url` attribute will always be scrubbed of username
For security reasons, the `url` attribute is always scrubbed of username
and password information.
and password information.
## Create a remote mirror
## Create a remote mirror
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24189) in GitLab 12.9.
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24189) in GitLab 12.9.
Create a remote mirror for a project. The mirror will be disabled by default. You can enable it by including the optional parameter `enabled` when creating it:
Create a remote mirror for a project. The mirror is disabled by default. You can enable it by including the optional parameter `enabled` when creating it:
@@ -26,7 +26,7 @@ PUT /projects/:id/repository/submodules/:submodule
...
@@ -26,7 +26,7 @@ PUT /projects/:id/repository/submodules/:submodule
| `submodule` | string | yes | URL-encoded full path to the submodule. For example, `lib%2Fclass%2Erb` |
| `submodule` | string | yes | URL-encoded full path to the submodule. For example, `lib%2Fclass%2Erb` |
| `branch` | string | yes | Name of the branch to commit into |
| `branch` | string | yes | Name of the branch to commit into |
| `commit_sha` | string | yes | Full commit SHA to update the submodule to |
| `commit_sha` | string | yes | Full commit SHA to update the submodule to |
| `commit_message` | string | no | Commit message. If no message is provided, a default one will be set |
| `commit_message` | string | no | Commit message. If no message is provided, a default is set |
```shell
```shell
curl --request PUT --header"PRIVATE-TOKEN: <your_access_token>""https://gitlab.example.com/api/v4/projects/5/repository/submodules/lib%2Fmodules%2Fexample"\
curl --request PUT --header"PRIVATE-TOKEN: <your_access_token>""https://gitlab.example.com/api/v4/projects/5/repository/submodules/lib%2Fmodules%2Fexample"\
| `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
| `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
| `order_by` | string | no | Allowed values are `created_at` only. If this is not set, the results will either be sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `order_by` | string | no | Allowed values are `created_at` only. If this is not set, the results are either sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `sort` | string | no | Allowed values are `asc` or `desc` only. If this is not set, the results will either be sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `sort` | string | no | Allowed values are `asc` or `desc` only. If this is not set, the results are either sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, snippet_titles, users.
Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, snippet_titles, users.
...
@@ -295,7 +295,7 @@ Example response:
...
@@ -295,7 +295,7 @@ Example response:
```
```
NOTE:
NOTE:
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`will be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`is intended to be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: commits **(PREMIUM)**
### Scope: commits **(PREMIUM)**
...
@@ -371,7 +371,7 @@ Example response:
...
@@ -371,7 +371,7 @@ Example response:
```
```
NOTE:
NOTE:
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`is intended to be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: notes **(PREMIUM)**
### Scope: notes **(PREMIUM)**
...
@@ -434,7 +434,7 @@ Example response:
...
@@ -434,7 +434,7 @@ Example response:
Search within the specified group.
Search within the specified group.
If a user is not a member of a group and the group is private, a `GET` request on that group will result to a `404` status code.
If a user is not a member of a group and the group is private, a `GET` request on that group results in a `404` status code.
```plaintext
```plaintext
GET /groups/:id/search
GET /groups/:id/search
...
@@ -447,8 +447,8 @@ GET /groups/:id/search
...
@@ -447,8 +447,8 @@ GET /groups/:id/search
| `search` | string | yes | The search query |
| `search` | string | yes | The search query |
| `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
| `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
| `order_by` | string | no | Allowed values are `created_at` only. If this is not set, the results will either be sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `order_by` | string | no | Allowed values are `created_at` only. If this is not set, the results are either sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `sort` | string | no | Allowed values are `asc` or `desc` only. If this is not set, the results will either be sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `sort` | string | no | Allowed values are `asc` or `desc` only. If this is not set, the results are either sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, users.
Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, users.
...
@@ -685,7 +685,7 @@ Example response:
...
@@ -685,7 +685,7 @@ Example response:
```
```
NOTE:
NOTE:
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`will be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`is intended to be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: commits **(PREMIUM)**
### Scope: commits **(PREMIUM)**
...
@@ -761,7 +761,7 @@ Example response:
...
@@ -761,7 +761,7 @@ Example response:
```
```
NOTE:
NOTE:
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`is intended to be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: notes **(PREMIUM)**
### Scope: notes **(PREMIUM)**
...
@@ -824,7 +824,7 @@ Example response:
...
@@ -824,7 +824,7 @@ Example response:
Search within the specified project.
Search within the specified project.
If a user is not a member of a project and the project is private, a `GET` request on that project will result to a `404` status code.
If a user is not a member of a project and the project is private, a `GET` request on that project results in a `404` status code.
```plaintext
```plaintext
GET /projects/:id/search
GET /projects/:id/search
...
@@ -838,8 +838,8 @@ GET /projects/:id/search
...
@@ -838,8 +838,8 @@ GET /projects/:id/search
| `ref` | string | no | The name of a repository branch or tag to search on. The project's default branch is used by default. This is only applicable for scopes: commits, blobs, and wiki_blobs. |
| `ref` | string | no | The name of a repository branch or tag to search on. The project's default branch is used by default. This is only applicable for scopes: commits, blobs, and wiki_blobs. |
| `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
| `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
| `order_by` | string | no | Allowed values are `created_at` only. If this is not set, the results will either be sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `order_by` | string | no | Allowed values are `created_at` only. If this is not set, the results are either sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `sort` | string | no | Allowed values are `asc` or `desc` only. If this is not set, the results will either be sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
| `sort` | string | no | Allowed values are `asc` or `desc` only. If this is not set, the results are either sorted by `created_at` in descending order for basic search, or by the most relevant documents when using advanced search.|
Search the expression within the specified scope. Currently these scopes are supported: issues, merge_requests, milestones, notes, wiki_blobs, commits, blobs, users.
Search the expression within the specified scope. Currently these scopes are supported: issues, merge_requests, milestones, notes, wiki_blobs, commits, blobs, users.
...
@@ -1096,7 +1096,7 @@ Example response:
...
@@ -1096,7 +1096,7 @@ Example response:
```
```
NOTE:
NOTE:
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`will be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`are intended to be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: commits **(PREMIUM)**
### Scope: commits **(PREMIUM)**
...
@@ -1178,7 +1178,7 @@ Example response:
...
@@ -1178,7 +1178,7 @@ Example response:
```
```
NOTE:
NOTE:
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`will be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
`filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename`is intended to be only the filename and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
@@ -17,10 +17,10 @@ directly in the browser, you’ll eventually need to use Git through the command
...
@@ -17,10 +17,10 @@ directly in the browser, you’ll eventually need to use Git through the command
tasks.
tasks.
For example, if you need to fix complex merge conflicts, rebase branches,
For example, if you need to fix complex merge conflicts, rebase branches,
merge manually, or undo and roll back commits, you'll need to use Git from
merge manually, or undo and roll back commits, you musto use Git from
the command line and then push your changes to the remote server.
the command line and then push your changes to the remote server.
This guide will help you get started with Git through the command line and can be your reference
This guide helps you get started with Git through the command line and can be your reference
for Git commands in the future. If you're only looking for a quick reference of Git commands, you
for Git commands in the future. If you're only looking for a quick reference of Git commands, you
can download the GitLab [Git Cheat Sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf).
can download the GitLab [Git Cheat Sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf).
...
@@ -39,12 +39,12 @@ You don't need a GitLab account to use Git locally, but for the purpose of this
...
@@ -39,12 +39,12 @@ You don't need a GitLab account to use Git locally, but for the purpose of this
recommend registering and signing into your account before starting. Some commands need a
recommend registering and signing into your account before starting. Some commands need a
connection between the files in your computer and their version on a remote server.
connection between the files in your computer and their version on a remote server.
You'll also need to open a [command shell](#command-shell) and have
You must also open a [command shell](#command-shell) and have
[Git installed](#install-git) in your computer.
[Git installed](#install-git) in your computer.
### Command shell
### Command shell
To execute Git commands in your computer, you'll need to open a command shell (also known as command
To execute Git commands in your computer, you must open a command shell (also known as command
prompt, terminal, and command line) of your preference. Here are some suggestions:
prompt, terminal, and command line) of your preference. Here are some suggestions:
- For macOS users:
- For macOS users:
...
@@ -66,18 +66,18 @@ computer:
...
@@ -66,18 +66,18 @@ computer:
git --version
git --version
```
```
If you have Git installed, the output will be:
If you have Git installed, the output is:
```shell
```shell
git version X.Y.Z
git version X.Y.Z
```
```
If your computer doesn't recognize `git` as a command, you'll need to[install Git](../topics/git/how_to_install_git/index.md).
If your computer doesn't recognize `git` as a command, you must[install Git](../topics/git/how_to_install_git/index.md).
After that, run `git --version` again to verify whether it was correctly installed.
After that, run `git --version` again to verify whether it was correctly installed.
## Configure Git
## Configure Git
To start using Git from your computer, you'll need to enter your credentials (user name and email)
To start using Git from your computer, you must enter your credentials (user name and email)
to identify you as the author of your work. The user name and email should match the ones you're
to identify you as the author of your work. The user name and email should match the ones you're
using on GitLab.
using on GitLab.
...
@@ -100,7 +100,7 @@ git config --global --list
...
@@ -100,7 +100,7 @@ git config --global --list
```
```
The `--global` option tells Git to always use this information for anything you do on your system.
The `--global` option tells Git to always use this information for anything you do on your system.
If you omit `--global` or use `--local`, the configuration will be applied only to the current
If you omit `--global` or use `--local`, the configuration is applied only to the current
repository.
repository.
You can read more on how Git manages configurations in the
You can read more on how Git manages configurations in the
...
@@ -113,7 +113,7 @@ You have two options:
...
@@ -113,7 +113,7 @@ You have two options:
- Authenticate on a project-by-project basis through HTTPS, and enter your credentials every time
- Authenticate on a project-by-project basis through HTTPS, and enter your credentials every time
you perform an operation between your computer and GitLab.
you perform an operation between your computer and GitLab.
- Authenticate through SSH once and GitLab won't ask your credentials every time you pull, push,
- Authenticate through SSH once and GitLab no longer requests your credentials every time you pull, push,
and clone.
and clone.
To start the authentication process, we'll [clone](#clone-a-repository) an existing repository
To start the authentication process, we'll [clone](#clone-a-repository) an existing repository
...
@@ -121,8 +121,8 @@ to our computer:
...
@@ -121,8 +121,8 @@ to our computer:
- If you want to use **SSH** to authenticate, follow the instructions on the [SSH documentation](../ssh/README.md)
- If you want to use **SSH** to authenticate, follow the instructions on the [SSH documentation](../ssh/README.md)
to set it up before cloning.
to set it up before cloning.
- If you want to use **HTTPS**, GitLab will request your user name and password:
- If you want to use **HTTPS**, GitLab requests your user name and password:
- If you have 2FA enabled for your account, you'll have to use a [Personal Access Token](../user/profile/personal_access_tokens.md)
- If you have 2FA enabled for your account, you must use a [Personal Access Token](../user/profile/personal_access_tokens.md)
with **read_repository** or **write_repository** permissions instead of your account's password.
with **read_repository** or **write_repository** permissions instead of your account's password.
Create one before cloning.
Create one before cloning.
- If you don't have 2FA enabled, use your account's password.
- If you don't have 2FA enabled, use your account's password.
...
@@ -161,11 +161,11 @@ Often, the word "repository" is shortened to "repo".
...
@@ -161,11 +161,11 @@ Often, the word "repository" is shortened to "repo".
### Fork
### Fork
When you want to copy someone else's repository, you [**fork**](../user/project/repository/forking_workflow.md#creating-a-fork)
When you want to copy someone else's repository, you [**fork**](../user/project/repository/forking_workflow.md#creating-a-fork)
the project. By forking it, you'll create a copy of the project into your own
the project. By forking it, you create a copy of the project into your own
namespace to have read and write permissions to modify the project files
namespace to have read and write permissions to modify the project files
and settings.
and settings.
For example, if you fork this project, <https://gitlab.com/gitlab-tests/sample-project/> into your namespace, you'll create your own copy of the repository in your namespace (`https://gitlab.com/your-namespace/sample-project/`). From there, you can clone it into your computer,
For example, if you fork this project, <https://gitlab.com/gitlab-tests/sample-project/> into your namespace, you create your own copy of the repository in your namespace (`https://gitlab.com/your-namespace/sample-project/`). From there, you can clone it into your computer,
work on its files, and (optionally) submit proposed changes back to the
work on its files, and (optionally) submit proposed changes back to the
original repository if you'd like.
original repository if you'd like.
...
@@ -185,19 +185,19 @@ After you saved a local copy of a repository and modified its files on your comp
...
@@ -185,19 +185,19 @@ After you saved a local copy of a repository and modified its files on your comp
changes to GitLab. This is referred to as **pushing** to GitLab, as this is achieved by the command
changes to GitLab. This is referred to as **pushing** to GitLab, as this is achieved by the command
[`git push`](#send-changes-to-gitlabcom).
[`git push`](#send-changes-to-gitlabcom).
When the remote repository changes, your local copy will be behind it. You can update it with the new
When the remote repository changes, your local copy is behind it. You can update it with the new
changes in the remote repository.
changes in the remote repository.
This is referred to as **pulling** from GitLab, as this is achieved by the command
This is referred to as **pulling** from GitLab, as this is achieved by the command
To use it, log into GitLab.com and fork the example project into your
To use it, log into GitLab.com and fork the example project into your
namespace to have your own copy to playing with. Your sample
namespace to have your own copy to playing with. Your sample
project will be available under `https://gitlab.com/<your-namespace>/sample-project/`.
project is available under `https://gitlab.com/<your-namespace>/sample-project/`.
You can also choose any other project to follow this guide. Then, replace the
You can also choose any other project to follow this guide. Then, replace the
example URLs with your own project's.
example URLs with your own project's.
...
@@ -213,7 +213,7 @@ To start working locally on an existing remote repository, clone it with the
...
@@ -213,7 +213,7 @@ To start working locally on an existing remote repository, clone it with the
command `git clone <repository path>`. You can either clone it via [HTTPS](#clone-via-https) or [SSH](#clone-via-ssh), according to your preferred [authentication method](#git-authentication-methods).
command `git clone <repository path>`. You can either clone it via [HTTPS](#clone-via-https) or [SSH](#clone-via-ssh), according to your preferred [authentication method](#git-authentication-methods).
You can find both paths (HTTPS and SSH) by navigating to your project's landing page
You can find both paths (HTTPS and SSH) by navigating to your project's landing page
and clicking **Clone**. GitLab will prompt you with both paths, from which you can copy
and clicking **Clone**. GitLab prompts you with both paths, from which you can copy
and paste in your command line.
and paste in your command line.
For example, considering our [sample project](https://gitlab.com/gitlab-tests/sample-project/):
For example, considering our [sample project](https://gitlab.com/gitlab-tests/sample-project/):
...
@@ -224,7 +224,7 @@ For example, considering our [sample project](https://gitlab.com/gitlab-tests/sa
...
@@ -224,7 +224,7 @@ For example, considering our [sample project](https://gitlab.com/gitlab-tests/sa
To get started, open a terminal window in the directory you wish to add the
To get started, open a terminal window in the directory you wish to add the
repository files into, and run one of the `git clone` commands as described below.
repository files into, and run one of the `git clone` commands as described below.
Both commands will download a copy of the files in a folder named after the project's
Both commands download a copy of the files in a folder named after the project's
name and preserve the connection with the remote repository.
name and preserve the connection with the remote repository.
You can then navigate to the new directory with `cd sample-project` and start working on it
You can then navigate to the new directory with `cd sample-project` and start working on it
The squashed commit in this example is followed by a merge commit, because the merge method for this repository uses a merge commit. You can disable merge commits in
The squashed commit in this example is followed by a merge commit, because the merge method for this repository uses a merge commit. You can disable merge commits in
The squashed commit's commit message will be either:
The squashed commit's commit message is either:
- Taken from the first multi-line commit message in the merge.
- Taken from the first multi-line commit message in the merge.
- The merge request's title if no multi-line commit message is found.
- The merge request's title if no multi-line commit message is found.
...
@@ -60,7 +60,7 @@ This way, the history of your base branch remains clean with
...
@@ -60,7 +60,7 @@ This way, the history of your base branch remains clean with
meaningful commit messages and:
meaningful commit messages and:
- It's simpler to [revert](revert_changes.md) if necessary.
- It's simpler to [revert](revert_changes.md) if necessary.
- The merged branch will retain the full commit history.
- The merged branch retains the full commit history.
## Enabling squash for a merge request
## Enabling squash for a merge request
...
@@ -113,18 +113,18 @@ squashing can itself be considered equivalent to rebasing.
...
@@ -113,18 +113,18 @@ squashing can itself be considered equivalent to rebasing.
With Squash Commits Options you can configure the behavior of Squash and Merge for your project.
With Squash Commits Options you can configure the behavior of Squash and Merge for your project.
To set it up, navigate to your project's **Settings > General** and expand **Merge requests**.
To set it up, navigate to your project's **Settings > General** and expand **Merge requests**.
You will find the following options to choose, which will affect existing and new merge requests
You can choose from these options, which affect existing and new merge requests
submitted to your project:
submitted to your project:
-**Do not allow**: users cannot use Squash and Merge to squash all the commits immediately before
-**Do not allow**: users cannot use Squash and Merge to squash all the commits immediately before
merging. The checkbox to enable or disable it will be unchecked and hidden from the users.
merging. The checkbox to enable or disable it is unchecked and hidden from the users.
-**Allow**: users will have the option to enable Squash and Merge on a merge request basis.
-**Allow**: users can enable Squash and Merge on a merge request basis.
The checkbox will be unchecked (disabled) by default, but and the user is allowed to enable it.
The checkbox is unchecked (disabled) by default, but and the user is allowed to enable it.
-**Encourage**: users will have the option to enable Squash and Merge on a merge request basis.
-**Encourage**: users can enable Squash and Merge on a merge request basis.
The checkbox will be checked (enabled) by default to encourage its use, but the user is allowed to
The checkbox is checked (enabled) by default to encourage its use, but the user is allowed to
disable it.
disable it.
-**Require**: Squash and Merge is enabled for all merge requests, so it will always be performed.
-**Require**: Squash and Merge is enabled for all merge requests, so it is always performed.
The checkbox to enable or disable it will be checked and hidden from the users.
The checkbox to enable or disable it is checked and hidden from the users.
The Squash and Merge checkbox is displayed when you create a merge request and when you edit the description of an existing one, except when Squash Commit Options is set to **Do not allow** or **Require**.
The Squash and Merge checkbox is displayed when you create a merge request and when you edit the description of an existing one, except when Squash Commit Options is set to **Do not allow** or **Require**.