Understanding Git in most non-technical way
Git is a distributed revision control and source code management system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Sounds daunting? Lets understand in a better way.
Suppose you're participating in a Poster Design Competition. The theme you need to work on is, "Natural Disasters" and the only software you are allowed to use is MS Word.
- First off, you create a folder called Competition to store the poster you design.
- Now, you create a sub-folder called Design-0. Inside this folder, you open a new MS Word file and start creating a poster and save this file as Poster-0.
- When you put some more thought into your idea, you decide to change the background color and the font. But, you aren't sure of this change so you don't overwrite on the existing poster. You decide to save this version as Poster-1 and place in a folder called Design-1, which is also a sub-folder of Competition.
- As you continue to make changes, you save every change as a new file to ensure that you have a copy of every modification made and store the files in sub-folders of Competition. Eg., Poster-2 and Poster-3 inside Design-2 and Design-3 respectively and so on.
- But in doing so, you have lost track of which background color and font you used in which file. This is causing more confusion than clarity and worse, you're losing a lot of time in merely switching between various files that are open in front of you.
- You come up with a solution to identify the key differences between the files by creating a document Summary-n that contains key details of the poster and the date-time of completion inside every sub folder Design-n.
- Visually, now there is a folder called Competition that contains n number of sub-folders called Design-n that contain two files: Poster-n and Summary-n.
Now, imagine a tool that could take care of all these steps. A tool that looks like your web browser history page; with a link to every Poster with its timestamp and a small Summary beside it.
This is how a Version Control System(VCS) works. Git is one such VCS. It lets you preserve the history of any change made to a code as and how you work on it.
GitHub is a web based Git storehouse that provides all the functionalities of Git as well as some interesting additional features like integrated issue tracking and organizational team management.