Sage-Code Laboratory

Version Control Systems

Source code is difficult to make and subject to change. Sometimes your changes are not good and you have to revert changes and try something else. When you work in a team this becomes a significant problem. To track software changes professional developers are using a special software called "Version Control System" (VCS).



Using a version control system adds to complexity of process. What are some of the reason we need such a thing? If is more complicated why will anyone set-up an additional system? Here are some use-cases that explain it:

  1. Team collaboration
  2. Improved on-boarding
  3. Test automation
  4. Release automation
  5. Root cause analysis

Popular version VCS

In the past there ware many attempts to make better version control systems. The most desired features are: network efficiency, compression capability, storage efficiency and decentralization. Some are more potent than others:

Basic Concepts

A version control system has several concepts to learn before you can use them.

Cloud based SCM

Normally a repository is local to a company and is stored on a server. Large teams and open source software can use cloud based repository. Lately there are several most popular organizations that enable creation of public and private repositories:

These organizations have also provided tools to maintain project source code and work items. Now any developer can start a project very fast and can invite other developers to join and work together on open source projects.

One of the most important aspect of software engineering is the ability to work in a team of developers. For this you need several skills that can be learn by practice.

What is Git?

Git is a distributed version control system that is used for software development and other version control tasks. A version control software can store source code or text in a repository and track modifications in a multi user environment.

Git was created by Linus Torvalds in 2005 for development of the Linux kernel.

Why Git is so popular?

Several features makes Git popular:

To develop a database you can work in a large team. For this you have to understand some terms and tools before you can collaborate with your team. Most of the companies are using GIT to control versions of software.

Main Terms

First, we need to introduce some Git-specific terms which may have different meanings in other version control systems such as Subversion or Mercurial.

Git is a distributed version control system. It is used to store source code that is based on text files organized in folders and sub-folders. This structure is named Git’s working tree. It is the directory where you can edit files and it is always part of a repository.

Git can have local repositories that have a working tree and so-called bare repositories, used on servers as central repositories that don’t have a working tree.

Git Software

To use Git you have to install Git software on your computer. This consist of Git client for your operating system and user interface tools to aid you visualizing the code.

You can download Git for Mac, Windows, Linux or Solaris:

Once you download the software read documentation:


Git commands are complex and difficult to master. For improving productivity you can use a graphical user interface (GUI). This is a program that may aid in your quest:

I have installed on my PC these two:

More tools:


On server you can have 2 options. One is to host on the cloud and second is to host on your own server. Git repository can be installed on Linux or Windows servers. When you install Git it has only basic capabilities. Most popular cloud services include a web user interface:

GitHub and BitBucket are SAS (Software as Service). Basic services are free, for open source projects. Private projects support limited number of users and you have to pay for more users. Some important features are not available for free.

You can install only GitLab on your own server. This will allow creation of very large, distributed projects. It can support unlimited number of users in a private environment behind a firewall.

Read next: Open Source Projects