Author: Matt Blanco Frank Anderson Jay Sella

Last Updated: 7 August, 2023

Introduction: Git

We’ve worked on a bunch of projects together, including some combination of emailing ourselves random jokes, writing a sliding door algorithm, and visualizing data to name a few. Each of these work great! However, suppose you want to revisit and modify these in six months. Will you remember what Val Town is called? Did you store your CodePen credentials in a secure password manager? Each of these projects are scattered across different tools and platforms.

This was intentional to maximize your development velocity, expose you to a plethora of available tools, and to showcase language and tool agnosticism. However, it does present drawbacks.

Suppose also that in six months, you want to collaborate with your roommate to expand on these programs you wrote. Over time, your idea takes off and your team keeps growing… 3 of you, then 5, then 8. How could you get the benefit of collaboration, the affordance of language agnosticism, and the confidence to try and build new things without breaking existing functionality?

In this module…

we will introduce version control and Git, and create a repository you can use to build a digital profile about yourself.

Version Control and Git

Version Control

Software can be very complex, but it’s important to feel comfortable both building new things and improving “old” things. It’s crucial to have systems in place to track when changes occur, who made the changes, and what was changed at each step.

That’s version control: a way to track the different versions of a project throughout development, and revert to previous versions if something goes wrong or you decide to backtrack. It lets you:

If you use Google Docs, you have access to their take on version control called “Version History”. It shows a list of changes along with timestamps, the specific content changed, info on who edited what, and the ability to revert the document back to that version.

Git

Git is an open-source version control software that efficiently tracks file changes. Nearly every company uses it, and it’s great for projects of any size. This includes solo side projects, teams at corporations like Airbnb with [over 1,200 developers](https://medium.com/airbnb-engineering/how-airbnb-safeguards-changes-in-production-9fc9024f3446#:~:text=Introduction,production — has also grown tremendously.), and open-source libraries such as Ruby on Rails with more than 4,775 contributors.