As you’re researching bootcamps, you’ve probably come across terms like version control or Git or GitHub. At many coding bootcamps, Git is the first tool you’ll learn – including LearningFuze in California. Tim Davis, Chief Academic Officer at LearningFuze takes us through the basics of Git [video 1] and a 15-minute Git tutorial [video 2]. Learn all about the history of Git, why version control is an essential best practice in 2021, and how to use GitHub to collaborate with other developers.
Version control is a way to create snapshots of work progress over time. For example, the ability to undo and redo capabilities in programs like Microsoft Word and Photoshop. These programs record actions taken which then enable users to track changes and time travel to previous versions.
Git is a specific implementation of version control. Git is a tool that you use locally (on your own computer). Git is the predominantly used version control tool to track changes.
Git was created by Linus Torvalds who started the Linux kernel project; he was using another programming that he hated, so he built his own tool called GIT. The whole purpose was to be able to track changes to the Linux kernel as the community was working on it.
Before these version control tools existed, developers would do whatever they could to keep track of changes. Typically, that meant saving a file, then making changes and renaming it “Version 2”, then making changes and naming it “Version 3” and so on.
Developers that worked in the same building or on the same network would store their code centrally, so everybody could access the files through the internet or their local network in their office. People had to communicate really carefully with each other to prevent overriding each other’s work. They were constantly stepping on each others' feet. The collaborative aspect is where version control shines.
I still remember having this question myself!
Git is a tool that you use locally (on your own computer). On your local machine, you either use your command line interface or a GUI tool to operate the GIT version control system on your local computer.
GitHub is a web application that was created 2-3 years after GIT itself. The website serves as a place to publish work so other developers can see it. In that way, it is very important to open source development.
Think of GitHub as “Git with friends!” GitHub adds a social coding dynamic to project management. If someone would like to contribute to your project, they can see it on GitHub, get a copy of it on their local computer, work on it, upload their ideas and changes to GitHub, then suggest that you incorporate them into your project.
Commit is like "saving" for Git. A commit is a checkpoint in time for your project.
Clone is an entire copy of a project, including all of its commits, branches, everything about the project
Fork is like a sideways clone. When you commit history for a specific project, you can pick up from where they left off and go a different direction if you want. Forking is an important part of open source contribution when working on someone else's' project, when you don't have control over their repository; part of a collaborative workflow between strangers on GitHub
Pull request: creating a record on GitHub that asks the maintainer if they will pull your changes into their project. Then the maintainer decides if they will accept the changes or not.
Branch: if a commit is a snapshot in time of your project, then a branch is an alternate timeline. It’s a project that has its own commit history; when someone wants to make additions, they don’t make commits on the trunk of a project, they make commits on branches to keep them from affecting the project itself until the official pull request.
Any field that utilizes plain text configuration uses Git – primarily software developers and DevOps. There’s huge potential for fields like data science and UI/UX design to implement version control, but presently, they are still figuring out best practices.
Git and GitHub are massively dominant, but there are alternatives.
LearningFuze ensures that Git is a part of the curriculum because version control is a required skill in modern development. No software is built by one person. Commercial software responsible for business processes or revenue generation will require a team of developers. It is absolutely critical for developers to have an understanding of version control for collaboration.
On a practical level, at LearningFuze, you can't turn anything in without using GitHub, so Git is the first thing you learn as a student.
The basic theory is: If you like coding enough to be a professional developer, to be willing to do it full-time as a career - a way to demonstrate your willingness to code is to actually do it. Employers would like to see that you're actively coding so that they can feel confident about giving you a coding position.
Tim’s favorite resources (with links):
Brook from Code Fellows compares Python vs Java – and tells you which you should learn first!
LearningFuze's new Part-Time Data Science Bootcamp was created for working adults!
Here's how NGT Academy supports the next generation of cybersecurity professionals...