spk-logo-tm-2023
0%
1-888-310-4540 (main) / 1-888-707-6150 (support) info@spkaa.com
Select Page

GitLab for Beginners: What Do You Need To Know?

windchill features best plm software
Written by Darla Kost
Published on October 18, 2025
Categories: DevOps | GitLab

Most developers are familiar with Git: the version control system that tracks changes to code. GitLab goes far beyond Git. It’s an end-to-end DevOps platform that manages your entire software lifecycle. From code hosting, version control, and CI/CD automation to security scanning and deployment, GitLab covers it all. If you’ve used GitHub or Bitbucket, GitLab may feel familiar. However, it is fundamentally different. Understanding its structure and workflow will help you unlock its full potential.

GitLab vs. GitHub vs. Bitbucket

Before diving into the details of GitLab, here is a quick comparison of GitLab, GitHub, and Bitbucket.

Feature
Focus
CI/CD
Hosting Options
Best For
Free Private Repos
Runners/Agents
Unique Strength
GitLab
All-in-one DevOps platform
Built-in (first-class)
SaaS & self-managed
Complete DevOps & security workflows
Built-in runners
Integrated CI/CD & compliance
GitHub
Social coding & open source
GitHub Actions
SaaS & limited Enterprise Server
Open-source & community projects
Actions runners
Largest developer community
Bitbucket
Tight Jira/Confluence integration
Bitbucket Pipelines
SaaS & self-managed
Atlassian-centric organizations
Pipelines agents
Native Jira integration

GitLab for Beginners:  Projects vs. Groups

Now that we have covered a bit about GitLab’s unique features, let’s dive into the basics. In GitLab, everything revolves around Projects and Groups, which form the foundation of how work is organized.

Projects

  • A project is where your code lives. It contains your Git repository, issues, merge requests, wikis, and CI/CD pipelines.

  • Each project focuses on a specific application, service, or deliverable.

  • Think of it as your workspace for writing, reviewing, and releasing code.

Groups

  • A group is an organizational container that holds multiple projects.

  • Groups make it easy to manage permissions, configurations, and policies for multiple projects at once.

  • You can create subgroups such as Company > Department > Team > Project to reflect your real-world hierarchy.

  • Members added to a group automatically gain access to all projects under it, based on their assigned role.

Issues, Merge Requests, and Pipelines

GitLab integrates collaboration directly into your code lifecycle:

  • Issues track bugs, features, and tasks, linking directly to merge requests.
  • Merge Requests are how developers propose code changes. They’re reviewed, discussed, and approved before being merged into the main branch.
  • Pipelines automate what happens after you push code. Using the .gitlab-ci.yml file, GitLab runs stages like build, test, and deploy automatically, ensuring code quality and reliability.

Each merge request can trigger its own pipeline, giving instant feedback on whether the new code passes tests or breaks something critical.

GitLab Runners

A GitLab Runner is the engine that executes your CI/CD jobs. When you define a pipeline in .gitlab-ci.yml, runners pick up those jobs and run them on available compute resources.

  • GitLab.com (SaaS) offers shared runners for free, especially for public projects.

  • Self-managed environments require you to install and maintain your own runners, giving you control over the infrastructure, dependencies, and performance.

Roles & Permissions

GitLab’s permission model is more nuanced than simple admin/read/write roles used in other platforms. You can assign roles at both group and project levels, including:

  • Guest – view limited project info
  • Reporter – read access and limited write privileges (e.g., comment on issues)
  • Plannerhybrid of guest and reporter roles but designed for those who need access to planning workflows.
  • Developer – commit code and create merge requests
  • Maintainer – manage settings, pipelines, and members
  • Owner – full control over group or project

Special user types like External, Auditor, and Administrator add additional control, especially for regulated or enterprise environments.

Visibility Settings

Every project and group in GitLab can be set to one of three visibility levels:

  • Private – visible only to invited members

  • Internal – visible to any authenticated user

  • Public – visible to everyone

Visibility settings cascade, meaning subgroups and projects cannot have higher visibility than their parent group. This ensures consistent access control across the organization.

GitLab.com vs. Self-Managed GitLab

There are two main types of GitLab: SaaS and Self-managed. Teams may also choose between GitLab Free, Premium, or Ultimate

Feature
Hosting
Maintenance
Access
Runners
Best for
GitLab.com (SaaS)
Managed by GitLab
GitLab handles upgrades & backups
Accessible anywhere
Shared runners included
Startups, open-source, small teams
Self-Managed (CE/EE)
Hosted on your own server or cloud
Your team manages it
Ideal for private networks or compliance
Must be installed and managed
Enterprises needing control or compliance

Why choose one over the other?

  • GitLab.com (SaaS) eliminates server management overhead and is perfect for fast starts or smaller teams.

     

  • Self-managed GitLab (Community or Enterprise Edition) offers data sovereignty, compliance, and integration control. It is ideal for regulated industries like healthcare or defense.

     

Creating a New Project in GitLab

  • Create a new project: In GitLab, a project hosts your repo, issues, MRs, CI/CD, etc. From the left sidebar, select Create new → New project/repository, then choose blank, import, or a template, set the visibility (private/internal/public), and create it.

     

  • Fork an existing project: On the project page you want to copy, click Fork (top-right), choose your namespace (personal or group), optionally rename/slug, and fork all branches (default). Forking lets you contribute without write access to the original.

Tip: If you forked, add the original repo as an “upstream” remote so you can pull updates later

 

git remote add upstream https://gitlab.com/original-owner/original-project.git
git fetch upstream

git merge upstream/main   # or: git rebase upstream/main

Clone the Project Locally

Clone with HTTPS (or SSH if you’ve added an SSH key):

git clone https://gitlab.com/your-name/your-project.git

cd your-project

If you forked, you’ll usually push back to origin (your fork). Keep upstream (the original) for syncing, as above.

Create a Branch and Make Changes

Create a feature branch off the default branch (often main):

git checkout -b feature/short-description

# edit files …

git status

Naming conventions like feature/, bugfix/, hotfix/ keep your repo tidy. If your team uses issues, mention them in branch names or commit messages (e.g., feature/123-improve-logging) to help cross-link work.

Commit and Push

Stage, commit with a clear message, and push:

git add .

 

git commit -m “feat(logging): add request correlation IDs (#123)”

git push origin feature/short-description

  • Use concise, present-tense commit messages.
  • If you forked, you’ll push to your fork (origin). You’ll open the merge request from your fork back to the parent project.

Creating and Running Your First Pipeline 

Ensure You Have Runners Available

If you’re using GitLab.com, you can skip this step. For self-managed setups, ensure you have at least one active runner.

To view available runners:

  1. Navigate to your project.
  2. Select Settings > CI/CD.
  3. Expand Runners.

If you see at least one runner with a green circle, you’re good to go.

Create a .gitlab-ci.yml File

The .gitlab-ci.yml file is the heart of your CI/CD configuration. It defines:

  • The structure and order of jobs to execute.

  • The conditions and logic for when they run.

If you need an example of code to run, check out this tutorial. Commit the changes to start your first pipeline.

View Your Pipeline Results

Once you commit .gitlab-ci.yml, GitLab automatically runs your jobs.

  • Go to Build > Pipelines to see your running and completed pipelines.

  • Click a pipeline ID for a visual representation of the stages and jobs.

  • Click any job name (e.g., deploy-prod) to view detailed logs and output.

If everything runs successfully, you’ve officially created your first GitLab CI/CD pipeline.

Getting Started with CI/CD

GitLab automatically detects a .gitlab-ci.yml file at your repository root.
This YAML file defines the jobs and stages your pipeline will run. For example:

stages:
  - build
  - test
  - deploy
 
build-job:
  stage: build
  script:
    - echo "Building the project" 
  test-job:
  stage: test
  script:
    - echo "Running tests"  
deploy-prod:
  stage: deploy
  script:
    - echo "Deploying application"

When you commit this file, GitLab immediately runs the pipeline. You can use artifacts to store build outputs or caching to speed up repeated tasks, making pipelines faster and more efficient.

Merge to main

Once pipelines are green and approvals are satisfied, you can merge. GitLab supports several merge methods:

  • Merge commit (default) keeps the branch history.
  • Squash & merge condenses your branch into one commit (cleaner history).
  • Fast-forward only disallows merge commits; requires your branch to be up-to-date/rebased first. 

If your pipeline includes deployment stages, merging to main can automatically deploy to staging/production via environments.

Ready to Implement GitLab for Your Organization?

GitLab is much more than a Git repository. It’s a complete DevOps ecosystem designed to unify code, collaboration, and continuous delivery. Whether you choose the cloud-based GitLab.com or a self-managed deployment, you’ll gain powerful tools to streamline development, enforce compliance, and deliver software faster. At SPK and Associates, we help teams get started with GitLab. We have you covered from installation and configuration to CI/CD setup, license management, and custom automation. Whether you’re migrating from GitHub, Bitbucket, or starting fresh, our experts can help you build a secure, efficient, and scalable DevOps environment with GitLab. If you are interested in utilizing GitLab, contact our experts today.

Latest White Papers

How to Prepare Your Organization for an AI Rollout

How to Prepare Your Organization for an AI Rollout

Managing your organization’s knowledge base may be challenging, especially if information is scattered across multiple systems. Discover how Atlassian’s AI Rovo agents help manage this.What You Will Learn In this eBook you will discover: Why knowledge management...

Related Resources

Why Invest in GitLab Ultimate?

Why Invest in GitLab Ultimate?

Modern software development teams must balance speed, security, and quality. Fortunately, tools like GitLab Ultimate empower enterprises to do exactly that. As the most comprehensive tier of GitLab’s DevSecOps platform, Ultimate combines AI-native capabilities,...