doc/user/project/working_with_projects.md
{{< details >}}
{{< /details >}}
Most work in GitLab is done in a project. Files and code are saved in projects, and most features are in the scope of projects.
{{< history >}}
{{< /history >}}
When you select a project, the Project overview page shows the project contents:
README or index file
For public projects, and members of internal and private projects with permissions to view the project's code, the project overview page shows:
README or index file.For users without permission to view the project's code, the overview page shows:
You can access a project by using its ID instead of its name at https://gitlab.example.com/projects/<id>.
For example, if in your personal namespace alex you have a project my-project with the ID 123456,
you can access the project either at https://gitlab.example.com/alex/my-project or https://gitlab.example.com/projects/123456.
[!note] In GitLab 17.5 and later, you can also use
https://gitlab.example.com/-/p/<id>for this endpoint.
You might need the project ID if you want to interact with the project using the GitLab API.
To find the project ID:
Use the Projects list to view:
View all projects on your GitLab instance. Filter the list by active, inactive, and trending projects:
If you are not authenticated, the list shows public projects only.
To view the projects on your GitLab instance:
{{< history >}}
your_work_projects_vue. Disabled by default.your_work_projects_vue. Disabled by default.your_work_projects_vue removed.{{< /history >}}
To view the projects you have interacted with:
You can also view your starred and personal projects from your personal profile:
{{< history >}}
your_work_projects_vue. Disabled by default.your_work_projects_vue removed.{{< /history >}}
A project is inactive when it is either pending deletion or it has been archived.
To view all inactive projects:
Each inactive project in the list displays a badge to indicate that the project is either archived or pending deletion.
If the project is pending deletion, the list also shows:
To view only the projects you are the owner of:
To view the activity of a project:
In the top bar, select Search or go to and find your project.
Select Manage > Activity.
Optional. To filter activity by contribution type, select a tab:
GitLab removes project activity events older than three years from the events table for performance reasons.
{{< history >}}
project_language_search. Enabled by default.project_language_search removed.{{< /history >}}
You can filter projects by the programming language they use. To do this:
A list of projects that use the selected language is displayed.
You can star projects you use frequently to make them easier to find.
To star a project:
{{< history >}}
{{< /history >}}
When you leave a project:
Prerequisites:
To leave a project:
To leave a project from the Your work list view directly:
This action is also available on other list pages.
Use the project general settings to edit your project details.
Prerequisites:
A project's repository name defines its URL.
Prerequisites:
[!note] When you change the repository path, users may experience issues if they push to, or pull from, the old URL. For more information on redirect duration and its side-effects, see redirects when renaming repositories.
To rename a repository:
Add a project avatar to help visually identify your project. If you do not add an avatar, GitLab displays the first letter of your project name as the default project avatar.
To add a project avatar, use one of the following methods:
If you haven't uploaded an avatar to your project settings, GitLab looks for a file named logo in your repository to use as the default project avatar.
Prerequisites:
logo with the extension .png, .jpg, or .gif. For example, logo.gif.To add a logo file to use as your project avatar:
Prerequisites:
.bmp.gif.ico.jpeg.png.tiffTo upload an avatar in your project settings:
{{< history >}}
{{< /history >}}
By default, when you delete a project for the first time, it enters a pending deletion state. Delete a project again to remove it immediately.
Prerequisites:
To delete a project:
This action adds a background job to mark a project for deletion. On GitLab.com, the project is deleted after 30 days. On GitLab Self-Managed, you can modify the retention period through the instance settings.
If the user who scheduled the project deletion loses access to the project before the deletion occurs (for example, by leaving the project, having their role downgraded, or being banned from the project), the deletion job instead restores the project, and the project is no longer scheduled for deletion.
When a project is marked for deletion, scheduled CI/CD pipelines stop running.
[!warning] If the user who scheduled the project deletion regains Owner role or administrator access before the job runs, then the job removes the project permanently.
You can also delete projects using the Rails console.
{{< history >}}
{{< /history >}}
If you do not want to wait for the configured retention period to delete a project, you can delete the project immediately.
Prerequisites:
To permanently delete a project scheduled for deletion:
This action deletes the project and all related resources, including issues and merge requests.
{{< history >}}
{{< /history >}}
Prerequisites:
To restore a project pending deletion:
{{< history >}}
{{< /history >}}
Archive a project to make it read-only and preserve its data for future reference.
When you archive a project:
Archived badgePrerequisites:
To archive a project:
To archive a project from the Your work list view directly:
This action is also available on other list pages.
When you unarchive a project:
Projects that were archived as part of group archiving cannot be unarchived individually. You must unarchive the parent group to unarchive all its projects and subgroups.
[!note] Deployed Pages are not automatically restored. You must rerun the pipeline to restore Pages.
Prerequisites:
To unarchive a project:
To unarchive a project from the Your work list view directly:
This action is also available on other list pages.
{{< history >}}
transfer_project_with_tags. Disabled by default.{{< /history >}}
Transfer a project to move it to a different group. Project transfers move individual projects between any namespace in the same GitLab instance.
You can transfer a project from:
Prerequisites:
[!note] You cannot transfer a project if it's archived or pending deletion.
To transfer a project:
You are directed to the new project page and the previous URL is redirected to the new project URL.
After you transfer a project, make sure you:
Administrators can transfer projects from the Admin area.
A project transfer includes:
[!warning] Errors during the transfer process might cause data loss of project components or dependencies of end users.
When transferring a project, keep the following restrictions in mind.
For projects with inherited memberships:
For projects where the container registry is enabled:
For projects that use the package registry:
For projects with a security policy:
When you transfer a project:
When you transfer a project from a namespace licensed for GitLab.com Premium or Ultimate to GitLab Free:
You can view a list of all your projects and manage them with the Actions menu.
Prerequisites:
To manage projects with the Actions menu:
The following actions are available depending on the state of your project:
| Project state | Actions available |
|---|---|
| Active | Copy project ID, Edit, Archive, Transfer, Leave project, Delete |
| Archived | Copy project ID, Unarchive, Leave project, Delete |
| Pending deletion | Copy project ID, Restore, Leave project, Delete permanently |
{{< details >}}
{{< /details >}}
You can add compliance frameworks to projects in a group that has a compliance framework.
You can use LDAP to manage group membership.
You cannot use LDAP groups to manage project access, but you can use the following workaround.
Prerequisites:
{{< details >}}
{{< /details >}}
GitLab repositories are usually accessed with a namespace and a project name. When migrating frequently accessed repositories to GitLab, however, you can use project aliases to access those repositories with the original name. Accessing repositories through a project alias reduces the risk associated with migrating such repositories.
This feature is only available on Git over SSH. Also, only GitLab administrators can create project aliases, and they can only do so through the API. For more information, see the Project Aliases API documentation.
After an administrator creates an alias for a project, you can use the alias to clone the
repository. For example, if an administrator creates the alias gitlab for the project
https://gitlab.com/gitlab-org/gitlab, you can clone the project with
git clone [email protected]:gitlab.git instead of git clone [email protected]:gitlab-org/gitlab.git.