What is VCS / Git / GitHub Study Notes VCS git

Version Control System (VCS)

A tool that tracks changes to files over time and lets you go back to any previous version, allows multiple people to work on the same project safely, keeps a history of who changed what and why, and that what Git do.

There are two main architectures:

1. Centralized Version Control System (CVCS)

There is one central server for all repository history.

2. Distributed Version Control System (DVCS)

Every developer gets a full copy of the repository. There can be a central server, but it’s optional.


Git

Git is a distributed version control system (DVCS). Created in April 2005 by Linus Torvalds to manage the linux kernel development. After a few months, he handed over maintenance to Junio Hamano in July 2005. Hamano has remained the primary maintainer of the Git project for nearly two decades.

Before Git they used a system called BitKeeper, but it became unavailable due to licensing issues.

git - the stupid content tracker:
In British slang, git is a mild insult or pejorative term. Meaning: It describes a person, usually a man, who is seen as unpleasant, annoying, stupid, or incompetent.

GitHub

GitHub is a cloud-based platform built on top of Git. While Git is a tool that works locally on your computer and tracks changes in files, GitHub is a service that uses Git to allow you to store repositories online and collaborate with other people.

GitHub was launched in 2008 and later acquired by Microsoft in 2018.


Core Concepts

Repository (repo)

a storage space where your project’s files and their history of changes are kept.

Commit

an operation which sends the latest changes of the source code to the repository, making these changes part of the head revision of the repository.

Branch

the duplication of an object under version control. Each object can thereafter be modified separately and in parallel so that the objects become different. In this context the objects are called branches. The users of the version control system can branch any branch.

Staging area (index)

the staging area is a file, generally contained in your Git directory, that stores information about what will go into your next commit. Its technical name in Git parlance is the index.

Forking

forking is the process of creating a personal copy of someone else’s GitHub repository under your own account. Unlike cloning, which only copies code to your local machine, forking creates a complete server-side copy of the repository on GitHub itself.