Projects

In GitLab, you can create projects for hosting your codebase, use it as an issue tracker, collaborate on code, and continuously build, test, and deploy your app with built-in GitLab CI/CD.

Your projects can be available publicly, internally, or privately, at your choice. GitLab does not limit the number of private projects you create.

Project features

When you create a project in GitLab, you'll have access to a large number of features:

Repositories:

Issues and merge requests:

GitLab CI/CD:

Other features:

Project integrations

Integrate your project with Jira, Mattermost, Kubernetes, Slack, and a lot more.

New project

Learn how to create a new project in GitLab.

Fork a project

You can fork a project in order to:

Project settings

Set the project's visibility level and the access levels to its various pages and perform actions like archiving, renaming or transferring a project.

Read through the documentation on project settings.

Import or export a project

CI/CD for external repositories (PREMIUM)

Instead of importing a repository directly to GitLab, you can connect your repository as a CI/CD project.

Read through the documentation on CI/CD for external repositories.

Project members

Learn how to add members to your projects.

Leave a project

Leave project will only display on the project's dashboard when a project is part of a group (under a group namespace). If you choose to leave a project you will no longer be a project member, therefore, unable to contribute.

Project's landing page

The project's landing page shows different information depending on the project's visibility settings and user permissions.

For public projects, and to members of internal and private projects with permissions to view the project's code:

For users without permissions to view the project's code:

Redirects when changing repository paths

When a repository path changes, it is essential to smoothly transition from the old location to the new one. GitLab provides two kinds of redirects: the web UI and Git push/pull redirects.

Depending on the situation, different things apply.

When renaming a user, changing a group path or renaming a repository:

Use your project as a Go package

Any project can be used as a Go package including private projects in subgroups. GitLab responds correctly to go get and godoc.org discovery requests, including the go-import and go-source meta tags, respectively. To use packages hosted in private projects with the go get command, use a .netrc file and a personal access token in the password field.

For example:

machine example.gitlab.com
login <gitlab_user_name>
password <personal_access_token>

Access project page with project ID

Introduced in GitLab 11.8.

To quickly access a project from the GitLab UI using the project ID, visit the /projects/:id URL in your browser or other tool accessing the project.

Project aliases (PREMIUM ONLY)

Introduced in GitLab Premium 12.1.

When migrating repositories to GitLab and they are being accessed by other systems, it's very useful to be able to access them using the same name especially when they are a lot. It reduces the risk of changing significant number of Git URLs in a large number of systems.

GitLab provides a functionality to help with this. In GitLab, repositories are usually accessed with a namespace and project name. It is also possible to access them via a project alias. This feature is only available on Git over SSH.

A project alias can be only created via API and only by GitLab administrators. Follow the Project Aliases API documentation for more details.

Once an alias has been created for a project (e.g., an alias gitlab for the project https://gitlab.com/gitlab-org/gitlab), the repository can be cloned using the alias (e.g git clone git@gitlab.com:gitlab.git instead of git clone git@gitlab.com:gitlab-org/gitlab.git).

Project APIs

There are numerous APIs to use with your projects: