Be it a small-scale startup, a big tech giant, or a unicorn company, one thing that is common to all is that they extensively use git to manage their huge codebase and make the deployment cycle faster.

Knowing how to make the most of git’s useful features is crucial to managing software. Or else, you may find yourself in a situation as shown below.

Don’t miss out on Git basics - byte-sized learning content that will get you up to speed with the fundamentals of Git using real-world applications.

At first, Git comes across as an easy tool that can be learned later when there is a real need. And that day comes when the git command shoots an error, after which Git becomes too complicated to understand. Often developers resort to copy-pasting which doesn’t help in the long run. Unless you are hands-on with Git, you are not an independent developer.

You are here because you want to understand and learn Git right from the basics. And that’s what this blog is all about.

Here’s what you will learn in this blog

  1. What is version control
  2. Benefits of version control systems in projects
  3. What is Git
  4. Features of Git
  5. How to use Git
  6. What’s the difference - Git vs. GitHub

What is Version Control System

Version control refers to the practice of tracking and managing changes to software code, and Version Control Systems refers to software tools that assist software teams in managing changes to source code over time.

In layman's terms, Version Control means that if you rip off the project or accidentally delete files, you can quickly recover them, and the overhead is negligible.

Say, you are adding a new feature to your million-dollar app. You spend sleepless nights writing code for it. And before you can go back in time, you realize that new bugs have crashed the production server.

Now what?

Frantically pressing Ctrl+Z on your keyboard to hopefully return to a previous version of the working code?

That’s not going to help always.

So, how do you get out of this Ctrl + z / Ctrl + y loop?

VCS - Version Control System is the answer you are looking for.

Why would you care to add another sword to your software armory?

VCS can not only restore your previous working version, but it can also solve other concerns with code management and application deployment. You cannot avoid learning VCS to manage and make your code production-ready in the current DevOps cultural shift.

Top Benefits of Version Control System

Trace the changes made to the code

Version control tracks change to a file or collection of files over time so that different versions can be restored later. It allows you to revert selected files to a previous state, the entire project to a previous state, monitor changes over time, see who last updated something that may be causing a problem, who implemented an issue, Additionally, it lets you add metadata to the changes that can help others understand why that change was made and when and who made it.

Simplify code review

The Version Control System also simplifies the code review process by measuring and introducing the differences introduced by the developer in the code to the reviewer, saving time and finding errors with ease.

Modify code efficiently

You can think of it as having a time-stone that enables you to go backward in your work so that you can rectify the origin of mistakes you did previously and make a new tangent in the time axis and manage messed up things.

Revert changes that introduce bugs

Bugs are an inevitable thing. Even in a small-scale project, bugs can indeed be found. Identifying and resolving bugs results in new updates that are published as patch updates. Without the use of a version control system, managing these patches and distributing the workload among peers is a time-consuming job.

Maintaining multiple versions of the project

Requirements evolve and change. When a new feature is added or an existing feature becomes outdated, the application code is updated. Handling various versions of code in a large codebase is a cakewalk with VCS.

Better collaboration and improved team productivity

Usually, a project is managed by a group of several individuals. Often this leads to interdependence among members, and productivity degrades as a consequence. Working in isolation, then exchanging code and combining differences, will boost development work exponentially.

Easy Integration with Latest Productivity Tools

Version control software provides an interface for integrating third-party productivity applications suites such as project/bug monitoring apps such as Jira. Hooks are customized scripts that are automatically triggered when a specific operation in a Git repository is performed. Hooks empower you to tailor your git workflow and initiate personalized behavior at key events in the project's life cycle.

What is Git

Git is a distributed version control framework that is free and open source. Linus Torvalds, the developer of the Linux operating system kernel, created it in 2005.

Git is used for project collaboration and history exploration. Git provides all of the benefits of a distributed Version Control system that have been addressed in the preceding section.

But what made Git a market leader? Let us investigate.

Features of Git

Here are some of the most basic and essential features of Git that make it the clear option of all available version control tools:

Fully Distributed VCS

Every participating node in distributed VCS has a complete copy of the project as well as a full revision history of each file. This allows you to work locally without a network connection all while allowing you to collaborate when you are back online via central remote repositories. Being distributed git implicitly provides you the advantage of having multiple backups and choice to follow workflow of your choice locally.

Data Integrity And Security

Git uses cryptographic algorithms to store files and snapshots. The checksum is determined when the files are stored and checked when they are retrieved. If you change things to a file, date, author information, commit message, or something else, the associated commit id changes. Use of the same commit ID ensures that your project is exactly the same as when it was committed, and that the history has not been altered.

Supports Non-linear Development

Git supports frictionless and rapid context switching between different linear workflows. This allows developers to work asynchronously and managers to do, frequent releases which generates frequent customer feedback and faster updates in reaction to that feedback.

Branching

This is a very powerful feature that allows for parallel creation and simple merges. Any new feature can be tested and worked on around the branches, and then integrated with the production branch almost instantly without affecting other people's code. Working with git offers an isolated environment for any change to your codebase made by any team member due to branch magic. This contributes to the adoption of feature-based workflow and also gives us the ability to perform experimentation that can be quickly discarded.

Lightweight And Fast- Everything Is Local

Almost all git operations are done locally, which greatly decreases network calls. Furthermore, the source code of git is written in C, a low-level language, which reduces overall runtime. Since git stores all project files with their full revision history, the repository's overall size can balloon significantly. Git optimises for this by combining the files into a Packfile. The Pack File stores the files and the variations in each version of the file.

Open-source and free

Git is heavily used by the developers as it is free and open to the community.

Basics of how Git works

First and foremost, it is important to understand the 3 areas where you code lives inside git:

Working tree

Working tree contains the files that you are currently working on. When you open the files for a project that is managed as a Git repository, you gain access to the Working Tree.

Staging area (Index)

The staging area is like backstage in a theatre, i.e. this area contains all the added files that contain new/changed code, which is ready to be joined to the next commit. All new/changed files are first pushed to the staging area.

Repository

Git repository contains all files of the project. It’s like your project’s database. It can be a local git repository or remotely present in any web hosting services like Github, Bitbucket, etc

Every file under Git goes through these three stages:

  1. Modified: In a git repository, you can make changes to your copy of the project without hampering the original code. This is called Modification, i.e. making some additions to the original project.
  2. Staged: Staged files are modified files that are marked to go in your next commit. git add command tracks the new changes and pushes them to the staging area.
  3. Committed: You must commit the file in order for the changes to be reflected and stored in the local database (.git directory). To make it accessible to all of your team members, use the git push command to push it to a remote central repository.

Basic Git Workflow

  1. When you browse and work on files in your repository, you are on a working tree, and all of your files are untracked at first.
  2. The files you want to record are then staged and moved to index.
  3. The staged files are then committed and saved in the local repository.
  4. When you're ready to make them public, add them to a remote repository hosting service such as Github.
Git Basics - get hands-on with the basic workflow of Git by doing fun real-world activities. Do check it out and learn Git at your own pace.

What exactly is GitHub?

GitHub is a platform built on top of git that allows developers to manage and communicate their projects with the rest of the globe. You, or someone else in the developer community, may contribute to open-source projects using GitHub. That's like Social media for developers, where you can interact with like-minded devs and work on meaningful projects collectively.

Git vs Github

What’s the difference between Git and GitHub then?

It's equivalent to asking for Email vs. Gmail. Git is a version control system, and GitHub is a cloud-based hosting service that helps in managing Git repositories.

Alternatives to Github

  • Gitlab
  • Bitbucket
  • AWS CodeCommit

TL;DR

  • Version control software is a fundamental part of modern software teams' day-to-day work processes and plays a critical role in overall project creation and management.
  • Git, a fast and feature-rich distributed version control system, is used by team members at all levels, from customer service to developers to project managers, all of which have varying viewpoints on what git means to them.
  • Git does not save the data as a sequence of adjustments. Git, on the other hand, creates a snapshot of your repository at a specific point in time. This snapshot is known as commit.
  • Git provides inexpensive local branching, handy staging areas, optimization for local operations and a support of lot of workflows all of which boost team efficiency.
  • Git protects source code from unintentional code changes or hardware failures, allowing us to easily revert to a previous version and pinpoint the source of an error. Git is a content management system, not a file management system.
  • Github on the other hand, is a platform for collaboration developed on top of Git. GitHub caters to developers, or those who code and build apps.

Further learning

Git basics for beginners

What next?

Fun exercises to deepen your understanding

Activity 1
  1. Create an empty folder and initialize a local repository. What was added to your folder ? (Select show hidden files option on your file manager)
  2. Create a file, myName.txt and fill in your name on the first line.
  3. Add the file to the staging area and then commit to add it in the local database.
  4. Track the .git directory by noticing the changes in it as you add files and make commits locally.
  5. Create a new github repository and add the remote to your local repository.
  6. Call your best friend and ask them to clone your repository.
  7. Ask him to make an edit to myName.txt by replacing your name and then pushing changes back to the github repository.
  8. Pull your repository now. Have you run into any problems? It's not a big deal; it's the most popular developer error.

Read up on why this error emerged and what the best practises are for resolving it.

Activity 2
  1. To your local repository, add a file.
  2. Create a new branch and add new files to it.
  3. Return to the main branch and use your file manager to open the repository.
  4. What happened to the files that were added to the new branch?
  5. Return to the newly created branch. Are they now visible?

Find out what's causing this conduct.

Activity 3

Add all your existing projects to Github by making separate repositories for each and manage them more efficiently.

This has two additional benefits in addition to efficient project management -

  1. Attract big companies looking for skilful developers.
  2. Bragging rights to flaunt a green Github graph on LinkedIn.

And if you are in search of kickass real-world projects, we have you covered.

Head to Crio Projects Hub and pick any project you like from a list of noteworthy and projects and complete them with a fully guided action plan. If you're wondering, YES! All projects are free to access, don't miss out the interesting project ideas available in this hub.