It does not matter if we are just starting the adventure with programming or are already experienced in the industry, at some stage of our career we will come across version control systems. Sooner rather than later. Currently, all devs are required to know some kind of system of this type. And which of them is the most popular now? It’s definitely Git. However, it is just a tool that needs to be hosted somewhere in order for anyone interested to have access to it. One of the services that offer this is GitLab.
Git repository architecture
To understand how to clone a GitLab repository, we need to understand how Git really works. It is a distributed version control system, which means that each copy is an exact mapping of the entire repository. In theory, all copies are equal. In practice, there is usually one repository in a project, called “origin”, which serves as single-source-of-truth, and that’s what everyone integrates with. This “origin” is always the most up-to-date version and it is downloaded to work on a given project.
So cloning is about downloading the entire project. All history and all commits will be fetched and when this operation is performed the local copy will be identical to the “origin” version. Once the repository is cloned correctly, you don’t need to do it again to work on your project. There are other functions for this, such as push and pull.
Git clone in GitLab
Now that the basics of Git are known, it’s time to get down to business. The clone function, like most functions in Git, can have many parameters that change its behavior. However, most parameters are optional. What is required is the address of the remote repository – our “origin” – and the local directory where the copied project is to be placed.
git clone <repo_address> <directory>
Where to get this address? Most often it is simply the HTTPS address of the project website, e.g. the Inkspace project – a free and open source vector graphics editor, is available at: https://gitlab.com/inkscape/inkscape
Upon entering this page you can find the “Clone” button, which allows us to clone a GitLab repository. After clicking on this button, the following window will open:
We can see two options here:
- Clone with SSH
- Clone with HTTPS
As you can see, there is not only the HTTPS address mentioned above, but also an SSH address. Is a GitLab clone with SSH different from clone with HTTPS? Technically very much, because they are two completely different communication protocols. However, from the perspective of performing repository cloning action, the difference is minimal. In the case of SSH, it is necessary to generate a key pair and put the public key in the GitLab account settings. Once this is done, just calling the clone function is no different. You just have to provide the appropriate address for the protocol.
When working with a repository, you cannot forget about the backup and restoration plan. For many reasons, a GitLab service cannot be treated as a backup, so we should take care of it on our own. There is a lot of information in the official documentation about the GitLab backup repository. However, preparing the correct scripts for backup, and then another for restoration, is quite difficult and requires a lot of work. That is why many experts recommend using third-party solutions, such as https://gitprotect.io/gitlab.html, to not waste time and resources on own solutions, but to use proven software.
GitLab clone is a fairly simple concept that requires only basic knowledge. The ability to use both HTTPS and SSH is a big advantage. However, we should always remember about a backup. Even if it would never be useful, it’s always worth being prepared for the worst.