2017-07-31 05:44:07 -04:00
# 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 ](../../public_access/public_access.md )
publicly, internally, or privately, at your choice. GitLab does not limit
the number of private projects you create.
2018-12-13 14:26:56 -05:00
## Project features
2017-07-31 05:44:07 -04:00
When you create a project in GitLab, you'll have access to a large number of
[features ](https://about.gitlab.com/features/ ):
2019-05-05 11:37:18 -04:00
**Repositories:**
2017-07-31 05:44:07 -04:00
- [Issue tracker ](issues/index.md ): Discuss implementations with your team within issues
- [Issue Boards ](issue_board.md ): Organize and prioritize your workflow
2019-08-26 16:56:42 -04:00
- [Multiple Issue Boards ](issue_board.md#multiple-issue-boards ): Allow your teams to create their own workflows (Issue Boards) for the same project
2017-07-31 05:44:07 -04:00
- [Repositories ](repository/index.md ): Host your code in a fully
2019-02-22 08:17:10 -05:00
integrated platform
2017-09-08 10:08:07 -04:00
- [Branches ](repository/branches/index.md ): use Git branching strategies to
collaborate on code
2017-07-31 05:44:07 -04:00
- [Protected branches ](protected_branches.md ): Prevent collaborators
from messing with history or pushing code without review
- [Protected tags ](protected_tags.md ): Control over who has
permission to create tags, and prevent accidental update or deletion
2019-10-27 02:06:30 -04:00
- [Repository mirroring ](repository/repository_mirroring.md )
2017-08-18 03:48:11 -04:00
- [Signing commits ](gpg_signed_commits/index.md ): use GPG to sign your commits
2018-03-31 20:11:28 -04:00
- [Deploy tokens ](deploy_tokens/index.md ): Manage project-based deploy tokens that allow permanent access to the repository and Container Registry.
2019-05-05 11:37:18 -04:00
- [Web IDE ](web_ide/index.md )
**Issues and merge requests:**
- [Issue tracker ](issues/index.md ): Discuss implementations with your team within issues
- [Issue Boards ](issue_board.md ): Organize and prioritize your workflow
2019-08-26 16:56:42 -04:00
- [Multiple Issue Boards ](issue_board.md#multiple-issue-boards ): Allow your teams to create their own workflows (Issue Boards) for the same project
2017-07-31 05:44:07 -04:00
- [Merge Requests ](merge_requests/index.md ): Apply your branching
2019-02-22 08:17:10 -05:00
strategy and get reviewed by your team
2019-05-31 07:08:09 -04:00
- [Merge Request Approvals ](merge_requests/merge_request_approvals.md ): Ask for approval before
2019-07-08 04:50:38 -04:00
implementing a change ** (STARTER)**
2017-07-31 05:44:07 -04:00
- [Fix merge conflicts from the UI ](merge_requests/resolve_conflicts.md ):
Your Git diff tool right from GitLab's UI
- [Review Apps ](../../ci/review_apps/index.md ): Live preview the results
of the changes proposed in a merge request in a per-branch basis
- [Labels ](labels.md ): Organize issues and merge requests by labels
2019-10-28 02:06:30 -04:00
- [Time Tracking ](time_tracking.md ): Track estimate time
2019-02-22 08:17:10 -05:00
and time spent on
2017-07-31 05:44:07 -04:00
the conclusion of an issue or merge request
- [Milestones ](milestones/index.md ): Work towards a target date
- [Description templates ](description_templates.md ): Define context-specific
2019-02-22 08:17:10 -05:00
templates for issue and merge request description fields for your project
2017-07-31 05:44:07 -04:00
- [Slash commands (quick actions) ](quick_actions.md ): Textual shortcuts for
2019-02-22 08:17:10 -05:00
common actions on issues or merge requests
2019-07-17 01:33:52 -04:00
- [Autocomplete characters ](autocomplete_characters.md ): Autocomplete
references to users, groups, issues, merge requests, and other GitLab
elements.
2018-04-16 11:38:03 -04:00
- [Web IDE ](web_ide/index.md )
2017-07-31 05:44:07 -04:00
**GitLab CI/CD:**
2019-10-16 11:06:17 -04:00
- [GitLab CI/CD ](../../ci/README.md ): GitLab's built-in [Continuous Integration, Delivery, and Deployment ](https://about.gitlab.com/blog/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/ ) tool
2019-09-17 08:06:48 -04:00
- [Container Registry ](../packages/container_registry/index.md ): Build and push Docker
2017-07-31 05:44:07 -04:00
images out-of-the-box
2019-10-07 20:06:10 -04:00
- [Auto Deploy ](../../topics/autodevops/index.md#auto-deploy ): Configure GitLab CI/CD
2017-07-31 05:44:07 -04:00
to automatically set up your app's deployment
- [Enable and disable GitLab CI ](../../ci/enable_or_disable_ci.md )
2019-03-27 00:17:02 -04:00
- [Pipelines ](../../ci/pipelines.md ): Configure and visualize
2019-07-21 21:49:37 -04:00
your GitLab CI/CD pipelines from the UI
- [Scheduled Pipelines ](pipelines/schedules.md ): Schedule a pipeline
to start at a chosen time
- [Pipeline Graphs ](../../ci/pipelines.md#visualizing-pipelines ): View your
entire pipeline from the UI
- [Job artifacts ](pipelines/job_artifacts.md ): Define,
browse, and download job artifacts
- [Pipeline settings ](pipelines/settings.md ): Set up Git strategy (choose the default way your repository is fetched from GitLab in a job),
timeout (defines the maximum amount of time in minutes that a job is able run), custom path for `.gitlab-ci.yml` , test coverage parsing, pipeline's visibility, and much more
2019-01-10 20:30:52 -05:00
- [Kubernetes cluster integration ](clusters/index.md ): Connecting your GitLab project
2019-01-14 12:22:18 -05:00
with a Kubernetes cluster
2019-05-31 07:08:09 -04:00
- [Feature Flags ](operations/feature_flags.md ): Feature flags allow you to ship a project in
2019-07-08 04:50:38 -04:00
different flavors by dynamically toggling certain functionality ** (PREMIUM)**
2017-07-31 05:44:07 -04:00
- [GitLab Pages ](pages/index.md ): Build, test, and deploy your static
2019-02-22 08:17:10 -05:00
website with GitLab Pages
2017-07-31 05:44:07 -04:00
**Other features:**
2019-01-07 10:18:41 -05:00
- [Wiki ](wiki/index.md ): document your GitLab project in an integrated Wiki.
- [Snippets ](../snippets.md ): store, share and collaborate on code snippets.
2020-02-07 16:08:39 -05:00
- [Value Stream Analytics ](cycle_analytics.md ): review your development lifecycle.
2019-07-08 04:50:38 -04:00
- [Insights ](insights/index.md ): configure the Insights that matter for your projects. ** (ULTIMATE)**
- [Security Dashboard ](security_dashboard.md ): Security Dashboard. ** (ULTIMATE)**
2019-01-07 10:18:41 -05:00
- [Syntax highlighting ](highlighting.md ): an alternative to customize
2019-02-22 08:17:10 -05:00
your code blocks, overriding GitLab's default choice of language.
2019-01-07 10:18:41 -05:00
- [Badges ](badges.md ): badges for the project overview.
- [Releases ](releases/index.md ): a way to track deliverables in your project as snapshot in time of
2019-02-22 08:17:10 -05:00
the source, build output, and other metadata or artifacts
associated with a released version of your code.
2019-10-11 14:06:15 -04:00
- [Conan packages ](../packages/conan_repository/index.md ): your private Conan repository in GitLab. ** (PREMIUM)**
2019-09-17 08:06:48 -04:00
- [Maven packages ](../packages/maven_repository/index.md ): your private Maven repository in GitLab. ** (PREMIUM)**
- [NPM packages ](../packages/npm_registry/index.md ): your private NPM package registry in GitLab. ** (PREMIUM)**
2019-07-08 04:50:38 -04:00
- [Code owners ](code_owners.md ): specify code owners for certain files ** (STARTER)**
2019-08-28 02:48:58 -04:00
- [License Compliance ](../application_security/license_compliance/index.md ): approve and blacklist licenses for projects. ** (ULTIMATE)**
2019-08-15 02:15:15 -04:00
- [Dependency List ](../application_security/dependency_list/index.md ): view project dependencies. ** (ULTIMATE)**
2017-07-31 05:44:07 -04:00
2018-12-13 14:26:56 -05:00
### Project integrations
2017-07-31 05:44:07 -04:00
[Integrate your project ](integrations/index.md ) with Jira, Mattermost,
Kubernetes, Slack, and a lot more.
## New project
Learn how to [create a new project ](../../gitlab-basics/create-project.md ) in GitLab.
### Fork a project
2020-02-05 19:09:12 -05:00
You can [fork a project ](repository/forking_workflow.md ) in order to:
2017-07-31 05:44:07 -04:00
- Collaborate on code by forking a project and creating a merge request
2019-02-22 08:17:10 -05:00
from your fork to the upstream project
2017-07-31 05:44:07 -04:00
- Fork a sample project to work on the top of that
2020-02-05 19:09:12 -05:00
### Star a project
You can star a project to make it easier to find projects you frequently use.
The number of stars a project has can indicate its popularity.
To star a project:
1. Go to the home page of the project you want to star.
1. In the upper right corner of the page, click **Star** .
To view your starred projects:
1. Click **Projects** in the navigation bar.
1. Click **Starred Projects** .
1. GitLab displays information about your starred projects, including:
- Project description, including name, description, and icon
- Number of times this project has been starred
- Number of times this project has been forked
- Number of open merge requests
- Number of open issues
2017-09-08 11:40:15 -04:00
## Project settings
2020-02-05 19:09:12 -05:00
Set the project's visibility level and the access levels to its various pages
2017-12-21 06:27:37 -05:00
and perform actions like archiving, renaming or transferring a project.
2017-09-08 11:40:15 -04:00
Read through the documentation on [project settings ](settings/index.md ).
2017-07-31 05:44:07 -04:00
## Import or export a project
2017-08-16 07:05:13 -04:00
- [Import a project ](import/index.md ) from:
- [GitHub to GitLab ](import/github.md )
2019-09-25 05:06:04 -04:00
- [Bitbucket to GitLab ](import/bitbucket.md )
2017-08-16 07:05:13 -04:00
- [Gitea to GitLab ](import/gitea.md )
- [FogBugz to GitLab ](import/fogbugz.md )
2017-07-31 05:44:07 -04:00
- [Export a project from GitLab ](settings/import_export.md#exporting-a-project-and-its-data )
- [Importing and exporting projects between GitLab instances ](settings/import_export.md )
2019-07-08 04:50:38 -04:00
## CI/CD for external repositories **(PREMIUM)**
2019-05-05 11:37:18 -04:00
Instead of importing a repository directly to GitLab, you can connect your repository
as a CI/CD project.
2019-05-31 07:08:09 -04:00
Read through the documentation on [CI/CD for external repositories ](../../ci/ci_cd_for_external_repos/index.md ).
2019-05-05 11:37:18 -04:00
2018-12-13 14:26:56 -05:00
## Project members
2017-08-14 14:00:51 -04:00
Learn how to [add members to your projects ](members/index.md ).
### Leave a project
2017-07-31 05:44:07 -04:00
**Leave project** will only display on the project's dashboard
when a project is part of a group (under a
[group namespace ](../group/index.md#namespaces )).
If you choose to leave a project you will no longer be a project
member, therefore, unable to contribute.
2017-12-21 06:27:37 -05:00
2019-10-17 05:07:07 -04:00
## 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 ](../permissions.md#project-members-permissions ):
- The content of a
[`README` or an index file ](repository/#repository-readme-and-index-files )
is displayed (if any), followed by the list of directories within the
project's repository.
- If the project doesn't contain either of these files, the
visitor will see the list of files and directories of the repository.
For users without permissions to view the project's code:
- The wiki homepage is displayed, if any.
- The list of issues within the project is displayed.
2017-12-21 06:27:37 -05:00
## 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.
2018-03-05 07:43:50 -05:00
When [renaming a user ](../profile/index.md#changing-your-username ),
2019-03-05 07:55:30 -05:00
[changing a group path ](../group/index.md#changing-a-groups-path ) or [renaming a repository ](settings/index.md#renaming-a-repository ):
2017-12-21 06:27:37 -05:00
- Existing web URLs for the namespace and anything under it (e.g., projects) will
redirect to the new URLs.
- Starting with GitLab 10.3, existing Git remote URLs for projects under the
namespace will redirect to the new remote URL. Every time you push/pull to a
repository that has changed its location, a warning message to update
your remote will be displayed instead of rejecting your action.
This means that any automation scripts, or Git clients will continue to
work after a rename, making any transition a lot smoother.
2018-03-05 07:43:50 -05:00
- The redirects will be available as long as the original path is not claimed by
another group, user or project.
2019-01-21 11:04:22 -05:00
## Use your project as a Go package
2019-11-19 04:06:16 -05:00
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` ](https://golang.org/cmd/go/#hdr-Remote_import_paths )
and [`go-source` ](https://github.com/golang/gddo/wiki/Source-Code-Links ) meta
tags, respectively. To use packages hosted in private projects with the `go get`
command, use a [`.netrc` file ](https://ec.haxx.se/usingcurl-netrc.html ) and a
[personal access token ](../profile/personal_access_tokens.md ) in the password
field.
2019-01-21 11:04:22 -05:00
For example:
```text
machine example.gitlab.com
login < gitlab_user_name >
password < personal_access_token >
```
2019-01-18 07:19:31 -05:00
## Access project page with project ID
2019-09-18 10:02:45 -04:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/53671) in GitLab 11.8.
2019-01-18 07:19:31 -05:00
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.
2018-12-13 14:26:56 -05:00
2019-07-08 04:50:38 -04:00
## Project aliases **(PREMIUM ONLY)**
2019-06-14 00:04:36 -04:00
2019-09-18 10:02:45 -04:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/3264) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.1.
2019-06-14 00:04:36 -04:00
2019-06-16 23:56:59 -04:00
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.
2019-06-14 00:04:36 -04:00
2019-06-16 23:56:59 -04:00
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 ](../../api/project_aliases.md ) for
more details.
2019-09-18 14:06:14 -04:00
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` ).
2019-06-14 00:04:36 -04:00
2018-12-13 14:26:56 -05:00
## Project APIs
There are numerous [APIs ](../../api/README.md ) to use with your projects:
- [Badges ](../../api/project_badges.md )
- [Clusters ](../../api/project_clusters.md )
2019-07-15 02:10:32 -04:00
- [Threads ](../../api/discussions.md )
2018-12-13 14:26:56 -05:00
- [General ](../../api/projects.md )
- [Import/export ](../../api/project_import_export.md )
- [Issue Board ](../../api/boards.md )
- [Labels ](../../api/labels.md )
- [Markdown ](../../api/markdown.md )
- [Merge Requests ](../../api/merge_requests.md )
- [Milestones ](../../api/milestones.md )
- [Services ](../../api/services.md )
- [Snippets ](../../api/project_snippets.md )
- [Templates ](../../api/project_templates.md )
- [Traffic ](../../api/project_statistics.md )
- [Variables ](../../api/project_level_variables.md )
2019-06-14 00:04:36 -04:00
- [Aliases ](../../api/project_aliases.md )