Thoughts on Git

Git is the most popular version control for developing software. Personally, I have used GitHub multiple times during my undergraduate and graduate career to develop software for group projects.

So what exactly is Git? Git is a distributed version control system that allows multiple developers to work on a single project at one time. The keyword, “distributed” is what allows Git to have significant advantages over other version control systems.

The Power of Distribution

The distributed portion Git is what allows developers to modify the source code however they like. With the ability to do forks and branching, developers are able to test experimental changes to the code without having to worry about breaking the master branch. This is an amazing feature when a developer wants test some crazy ideas when trying to improve the code. Another advantage of Git is that Git allows users to work on their code offline. If a developer wants to work on code while traveling on a plane or is in an area with no Internet access, he or she is able to commit changes to the local repository and then push the commits to the remote repository when Internet access is available. Lastly, another major advantage of Git is that Git can be used for other files besides just code. A writer is able to use Git to back up his or her papers using Git and have version control. Another example is a PhD student backing up his or her dissertation that is written in LaTeX.

Recent Discovery

While I have been using Git for a while, one thing I have always avoided using a .gitignore file to instruct Git to ignore some files during commits. I found that making a .gitignore to be a hassle and not worth my time. Recently, I learned that there is a website called that will generate .gitignore files for you. This is a useful tool to generate multiple .gitignore files quickly.


Any software developer should at least know how to use Git at the basic level. The advantages that Git provides to ones workflow is worth spending around 30 minutes of time learn it. Being able to have backups, version control, and having a distributed workflow allows for more opportunities to increase workflow efficiency.