I just completed my undergraduate in Computer Science and Engineering from a tier 3 college which you might have not even heard of. Moreover, I’ve got acceptance from 7 US universities for pursuing my Master’s in Computer Science.
Currently, I work as a full-time Associate Machine learning Engineer for a California based startup called “Quant Binary”. I’ve also acted as a Machine Learning Engineer at “Omdena” where I worked with over 50 collaborators from 19 countries, developing a Machine learning solution for identifying malnutrition in children — a problem affecting over 200 million children.
Purpose of this article
I’ve seen myself, several students, and many entry-level programmers getting confused about Git and GitHub. I always used to have questions like what exactly these tools are, why are they even used, what’s the difference between this Git and Github and why does everyone keep stressing about the importance of learning them.
The purpose of this article is to address each of these questions that come and to provide a roadmap for learning Git and GitHub, absolutely free of cost.
Table of Contents
- What is Version Control?
- What is Git?
- What is GitHub?
- Why use Git and GitHub?
- Git vs. GitHub: What’s the difference?
- Git and GitHub in simple words with an example
- Free resources for learning Git and GitHub
- Suggested Learning Path
What is Version Control?
Software or Development projects don’t just come into life directly. They are built code line upon code line from the ground up and there’s a lot of trial, error, and correction that harmonizes into building something that actually works the way it’s supposed to.
Version control is responsible for managing changes to computer programs, documents, large web sites, or other collections of information.
A version control system(VCS) basically gives you the power to review and even restore earlier versions of your development work.
- Let’s consider that you’re working on a web development project, and through the course of your reviews and revisions, you abruptly notice all of your text has become misaligned.
- It can be because of some change that you made somewhere else.
- But not to worry, this is where version control comes in.
- Instead of having to crawl back and checking every line of code, you can just use your version control system to reload your earlier saved version, until you locate the trouble-making change and correct it.
What is Git?
Git is a free and open-source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git is basically used for tracking changes in any set of files, originally designed for coordinating work among programmers collaborating on source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows.
Git is installed and maintained on your local system.
What is GitHub?
GitHub is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.
GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere.
GitHub is exclusively a cloud-based service.
Why use Git and GitHub?
Git is the most popular version control system out there.
Version control is the only plausible way to keep track of changes in code, software development/web development projects, and many other things that we programmers do daily.
Github is like Instagram for programmers.
Every programmer is literally out there on GitHub. You can look at what other programmers, companies or organizations are working on and can easily study their code and make suggestions or changes.
Git vs. GitHub: What’s the difference?
Git is a version control system that lets you manage and keep track of your code history and GitHub is designed as a Git repository hosting service.
Git is a software while GitHub is a service!
While Git is a command-line tool, GitHub provides a Web-based graphical interface.
Git and GitHub in simple words with an example
- While working on a project with a large team, all team members will be working on the same project but each of you will be having a different version of the same project.
- Suppose you have made changes in the project directory on your machine and you want to send those changes to your collaborators and you also want the changes they make to appear directly in your machine’s project directory.
- Because when many collaborators simultaneously work on the same project, it is very crucial to be on the same page with your teammates to avoid any type of conflict.
- So, how you will do that?
- This is where Git comes into the picture.
- Using Git, you work on the same copy as your team member. But the copy on which you will be working, won’t reflect any of the changes in the main directory unless and until you pull your collaborator’s changes and push back your own changes.
Don’t worry about the jargons like push and pull. There are plenty more proper terminologies that you’ll learn in the tutorials. But for now, just consider a push command as sending the recent changes from your local directory to GitHub while the pull command grabs any changes from the GitHub repository and merges them into your local directory.
A repository/directory is nothing but a folder and a folder is nothing but storage space where your projects can live.
- But, how will you push and pull these changes?
- This is where GitHub comes in.
- GitHub is basically a place to store your working directories or repositories. It is literally a hub for the Git repositories which you can access anytime via your GitHub account.
- These accounts come with an abundant storage space where you can store your repositories and build a proper profile that holds great value.
- By default the repositories are public i.e., everyone can see your codes but you can make it private as well. So if you are a good coder you can upload your own applications and programs and get recognition from others.
GitHub can host your project’s source codes in various programming languages and keep the track of each and every changes made to every iteration.
Free resources for learning Git and GitHub
(Just click every underlined & bold title and you’ll be redirected to that respective page. Also, all the resources that I’ll be mentioning are free of cost.)
1. Shell Workshop — Udacity
You need to know how to work with the terminal when it comes to programming, especially Git. Make sure you have good hands-on practice with all the shell commands.
A shell is a computer program that presents a command line interface which allows you to control your computer using commands entered with a keyboard instead of controlling graphical user interfaces with a mouse/keyboard combination.
This course is a quick, one-lesson introduction to the Unix-style command-line environment. This course is intended to get you up working on the shell — using a terminal, managing files and directories, and running command-line programs.
2. Version Control with Git — Udacity
This Richard Kalehoff course covers the essentials of using Git. You’ll be able to create a new Git repository, commit changes, and review the commit history of an existing repository. You’ll also learn how to keep your commits organized using tags and branches and you’ll master the art of merging changes. You will also learn how to edit commits, revert changes and even delete commits.
Richard is an amazing, amazing teacher. The way he explains every concept is just way too good. Hands down the best. This course will get you started with everything you need to know about Git.
3. GitHub & Collaboration — Udacity
As of today, 28th January, this course is currently unavailable on Udacity’s website and I have absolutely no idea why. This was another wonderful course by Richard which essentially starts right after his Git course.
Nevertheless, I’ve mentioned the link for the overview of that course so that you will get an idea as to what this course actually covered. It was basically a short course but technically a very sweet and on point course on GitHub.
You will have to dig deep on the internet and see if you can find this course from somewhere.
4. Git and GitHub for Beginners — Gwen Faraday — YouTube
This wonderful course by Gwendolyn covers everything about Git and GitHub, right from what is Git, version control, Technical jargon to all the commands in Github.
This is essentially a Crash course. Even today, whenever I tend to revise Git and Github for an interview or anything related, I always go for this 1-hour long video. Simply excellent.
5. Git Tutorial for Beginners — Telusko’s YouTube Channel
If you’re someone who’s not that comfortable with an American accent, I’ll suggest this channel. Navin is an experienced tutor who explains each concept pretty concisely.
In this 1 hour long video, Navin has covered everything in-depth, right from creating an account on Github to explaining and demonstrating all of its features as well.
Suggested Learning Path
I’ll sum up everything for you so that there’s absolutely no place for doubts. The learning path that I’ll suggest is that,
- Start with the Shell Workshop. Learn all the shell commands there. This will be important as Git is a command-line tool so, you’ll need to have hands-on knowledge about the terminal.
- Next will be the Udacity’s Version Control with Git course.
- Now, with all the newly gained skills, you will be good to go to learn Github. This is where you should go for Udacity’s GitHub and Collaboration course.
- If for any reason, the course remains unavailable or you are unable to find it on the internet, you should proceed to Git and Github course by Gwen Faraday.
- Make sure that you’re writing everything down. Go get a register and write everything down— right from definition, syntax, use cases to code as well. After that, write it down on the code editor/terminal as well and see how your program runs, see how your code behaves, and what common mistakes you make while writing Git and GitHub commands.
- Last but not the least, make sure you revise everything at least once biweekly.
Take your time!
Everyone learns at a different speed.
All these tips and techniques that I mentioned here in this article is what I’ve learned from my learning journey over the years. I want you all to at least try them for like once and see if these techniques work for you as well or not.
If you find this article to be helpful, do follow me for more such amazing articles and share them with your friends as well. I’ll be writing articles, tutorials, projects, and a lot more posting one, almost every month. Till then, Keep learning. Cheers!
To connect with me or for any difficulties, I’ll be very much obliged to help. You can find me here on LinkedIn.