GitLab Frequently Asked Questions


1) What is GitLab?
GitLab is a front-end (web user interface) to Git, which is a cloud-based version control software.


2) What does version control mean?
It’s a system that records and manages changes to projects, files and documents. It makes it easier to collaborate, because it shows who has changed what and helps you combine contributions.

There are many different version control systems:

some are Distributed, one repository on a server

  • Unordered List ItemuSubversion (SVN)
  • Concurrent Versioning System (CVS)

others are Decentralized, many local repositories that can be synced

  • Git
  • Mercurial (Hg)


3) Will Git be really useful for me?
Git will be extremely useful in case you want to work with other people together on the same files. It is a great way to manage git repositories on a centralized server. GitLab gives you complete control over your repositories or projects and allows you to decide whether they are public or private for free. For example, if you want to write a paper or a code with some colleagues or supervisor, you may find Git useful, instead of always sending one or multiple documents via e-mail. Git will be also useful even if you don't have to share, as it provides backup for your important projects and helps you to have always an updated copy if you are working on different local machines, namely you may want to keep a “main” repository on a “server” which is backed up and secure, and use your local repository as merely a “client” resource.


4) So far, it seems exactly like Dropbox, right?
Like Dropbox, Git lets multiple people work on the same files at the same time. This is great when many people are working on a document together. Everyone can be contributing to the same folder and files, without fear of overwriting or deleting other's work, something Dropbox can screw up. This is true because Dropbox automatically upload edited documents from you local machine to the “cloud” repository, creating conflicted copy if the same file is used by another user.


5) How does git avoid this issue?
The first difference is that git doesn't assume that you want to send every saved change to the cloud. You must be explicit about what you want to send to the cloud. Whereas Dropbox automatically uploads everything when you save it, git adds a new step: commitment. After you save a file, you must explicitely tell git that you are “committed” to this change. With Git, uploading to the cloud is called “pushing”. You are literally pushing the changes from your computer up in to the cloud. Only after that, other people will be able to download the new files.

The second difference is downloading. While Dropbox downloads the new changes automatically, Git waits for you to tell it too. You must ask git explicitly to “pull” the changes down from the cloud to your computer. This gives you the latest copy of the documents, including everyone else's changes.

Summarizing, what Dropbox does automatically (possibly generating conflicts), with Git all these actions must be done explicitly by the user, with the commands:

git pull # a pull is what you would do to bring your local repository up-to-date.
git commit # a "commit" is a snapshot of our repository. This way if you ever need to look back at the changes you've made, you will see a nice timeline of all changes.
git push # this command allows you to share the cool changes you made to the git repository

For more detail see the basic command section.


6) Ok, but how about two or more people working on the same file?
First of all, it is a good practice to make sure you have the latest version with everyone else's changes (i.e. do a pull), before you start edit and push the files. Moreover Git figures out what to do if two users were editing the same file. For example, if user A and B change different lines of the same file Git will figure it out. Otherwise, if user A and B edit the very same line(s), and user A commits and pushes first, then Git asks user B to explicitely resolve the conflicts as soon as user B try to push his version.
Advice:

  • commit often
  • use good commit messages


7) Are these the only differences?
No, there are more feature that helps keeping track of your progress. For example, every time you commit some changes, git asks you for a “commit message”. This is a short message which should describe the changes you made: a brief overview so that you can remember the changes or someone could review the list of changes to the file, without actually having to read it.

Every commit makes a little tick on a timeline. Git keeps track of every commit action, which means that you can zoom back in time, watching the evolution of your project. You can retrieve every line change, along with who made it, and what “commit message” was.

GitLab offers you a nice graphical user interface with fancy features such as the commit graphs which allows one to keep track of all the different users contibutions as a function of time. It is also very easy to invite people in your project and possibly assign them different user permissions.


8) So it becomes impossible to remove files from the repository?
No, if you make a mess you can clean it up removing permanently undesired files and folders from the repository.


9) Do I have to use the terminal?
Yes and no. You can directly work from the web user interface but it is highly recommended making use of the command line to manage snippets, projects and more in order to avoid repeated trips to the web UI. Setup a working directory (git repository) on your local machine, the basic commands are very few (3 or 4) and the rest are very well documented in more than one website .


10) Why GitLab and not GitHub, you ask?
GitLab vs. GitHub https://about.gitlab.com/better-than-github/

More info about Git at https://git-scm.com/about


11) Are you a beginner?
Get started with git with this fancy on-line tutorial! https://try.github.io/levels/1/challenges/1

This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information