About

I created this site to help new developers understand the importance of git, and as an exercise in HTML and CSS for myself creating this site. When I first starting using git I was using the web UI exclusively (not a good way to learn git). Below I will describe what git is, how to learn it, and how I use it.

VCS

Git is a Version Control System or VCS. Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.

For almost all software projects, the source code is like the crown jewels - a precious asset whose value must be protected. For most software teams, the source code is a repository of the invaluable knowledge and understanding about the problem domain that the developers have collected and refined through careful effort. Version control protects source code from both catastrophe and the casual degradation of human error and unintended consequences.

Software developers working in teams are continually writing new source code and changing existing source code. The code for a project, app or software component is typically organized in a folder structure or "file tree". One developer on the team may be working on a new feature while another developer fixes an unrelated bug by changing code, each developer may make their changes in several parts of the file tree.

Version control helps teams solve these kinds of problems, tracking every individual change by each contributor and helping prevent concurrent work from conflicting. Changes made in one part of the software can be incompatible with those made by another developer working at the same time. This problem should be discovered and solved in an orderly manner without blocking the work of the rest of the team. Further, in all software development, any change can introduce new bugs on its own and new software can't be trusted until it's tested. So testing and development proceed together until a new version is ready.

Good version control software supports a developer's preferred workflow without imposing one particular way of working. Ideally it also works on any platform, rather than dictate what operating system or tool chain developers must use. Great version control systems facilitate a smooth and continuous flow of changes to the code rather than the frustrating and clumsy mechanism of file locking - giving the green light to one developer at the expense of blocking the progress of others.

Software teams that do not use any form of version control often run into problems like not knowing which changes that have been made are available to users or the creation of incompatible changes between two unrelated pieces of work that must then be painstakingly untangled and reworked. If you're a developer who has never used version control you may have added versions to your files, perhaps with suffixes like "final" or "latest" and then had to later deal with a new final version. Perhaps you've commented out code blocks because you want to disable certain functionality without deleting the code, fearing that there may be a use for it later. Version control is a way out of these problems.

Version control software is an essential part of the every-day of the modern software team's professional practices. Individual software developers who are accustomed to working with a capable version control system in their teams typically recognize the incredible value version control also gives them even on small solo projects. Once accustomed to the powerful benefits of version control systems, many developers wouldn't consider working without it even for non-software projects.

By far, the most widely used modern version control system in the world today is git. Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel. A staggering number of software projects rely on git for version control, including commercial projects as well as open source. Developers who have worked with git are well represented in the pool of available software development talent and it works well on a wide range of operating systems and IDEs (Integrated Development Environments).

Credit: Atlassian

github logo gitlab logo bitbucket logo

Which Git?

GitHub, GitLab, and Bitbucket are code collaboration and version control tools offering repository management. They each have their share of fans, though GitHub is by far the most-used of the three. Of the three, only GitLab is open source, though all three support open source projects. GitHub offers free public repositories; Bitbucket also offers free private repositories; GitLab offers a Community Edition which is entirely free.

If you are just starting I would recommend that you use GitHub. There is a larger community of developers and more learning resources available to get you started. I do plan on eventually migrating over to GitLab since they are open source, this aligns more with my philosophy on FOSS.

Resources

Workflow

When I was first working with GitHub I would copy and paste my code out of my IDE and paste it in GitHub using the web application. After learning how to use GitHub properly I'm now checking out the repo using either WebStorm or Pycharm.

Now to finish this site
git commit -m "finishing site"
git push