View on GitHub


Get started with Gitlab in practicable time

A Short Gitlab Tutorial

First of all, I don’t want to start a war between Github and Gitlab here. I do neither care about the ethics of using Github nor the news that Microsoft bought Github recently. I wrote this guide for one obvious reason: I want to migrate to Gitlab and help people in the same situation because thing seems a little bit different over there.

Secondly, I am not affiliated with Gitlab.

Thirdly, I am utterly targeting open source contributors and those of you who are too lazy to sign up for a Gitlab account to try it out.

It’s gonna be concise (and maybe informal sometimes) so that you can kick off as soon as possible. In this guide, I am gonna assume that you are a basic Github user familiar with terms like Repo, Star, Pull Request, … but not familiar with Github Enterprise or other “advanced” features of Github.

If you consider yourself highly mature in either of these platforms, this may not expose you to any new facts.(although I would really appreciate your reading and reviewing it)

Enough introduction, let’s go!

Setting up Gitlab

This is the screen after you have singed up and logged in succesfully.

This dashboard is not similar to Github in UI, but the functionalities are pretty similar. Look at the top bar, you got Groups, Activity, Milestones, … These are explainable on their own so I won’t go deeper here.

Some differences that should be noticed are:

Create your first new project

While there are not many options for creating new projects (=repositories) on Github, Gitlab has a bunch of options to choose from, notably:

Blank project

You get three levels of visibility. Aside from the regularly seen private and public, they offer internal, of which openness is limited to logged in user only.

Create from a template

Gitlab offers Ruby on Rails, Spring and NodeJS Express templates to start with.

Import project from other services.

This is too easy an option. Gitlab already provided a guide for it.

CI/CD for external repo

If you plan to use Gitlab as a CI/CD provider (like Jarvis, Circle CI), go for this and provide them a Github Token. There’s also a guide for this.

Above image shows a quick walkthrough

Your first project page

After set up with blank project, this is what you get:

There are some important points to notice on this screen:

  1. SSH key - You have to set up one before you can push to Gitlab for security reasons. (Gitlab uses SSH while Github uses HTTPs by default). It’s easy and both Github and Gitlab provides a guide to do it.
  2. CI/CD and Operations - Gitlab has these built in by default. Skip the following part if you don’t care or never used CI/CD while in Github.
    • If you are using one CI/CD system on Github (like Travis, CircleCI, .etc) this is pretty much the same. Builds are defined in a .yml file and Gitlab has a specific guide on this.
    • Operations are for you to integrate your app with Kubernetes (via Google Cloud Platform) so that deployments can be done automatically and environmentally-wise. Gitlab also got a guide for this.
    • AFAIK, Gitlab doesn’t receive support from Travis/CircleCI on their platform. Some other CI services like Atlassian Bamboo or DroneCI works.
  3. Registry - Again, I am not sure if you ever worked with containers, but if you know what DockerHub or Amazon ECR are, this one is the Gitlab version of them.

Everything else is similar to what Github offers.


Yeah I do hide a lot of the powers that Gitlab gives us. If you feel curious, head to the setting part, here’s a simple list of things that you can tweak on Gitlab but not on Github:

Explore other projects and Contribute

I bet you will feel overwhelmed when seeing other projects’s page for the first time.

This is a perfect example for a project hosted on Gitlab: Gitlab itself. From the screenshot, you can criticise them for polluting your mind with buttons, titles, buttons. It would be a total difference if you look at this then come back to Gitlab’s page.
But I believe it’s not too hard to get familiar with. If you spend 15 seconds on this page, you will get the idea of what’s going on. I just want to list out things that you might not see in that 15 seconds:

Everything else works just like Github or with some supplements (for example: subscribe to issues via RSS).

The contribution flow is also the same : Fork > Edit > New Merge Request


By now, you must have been aware of how things work the Gitlab way and what Gitlab has to offer. I really hope that this will ease your way to Gitlab without hiding too much Gitlab’s power. Gitlab itself has cool things to be discovered, not just a mirror for other services like Github. :)