GIT, REVISION CONTROL, AND DOCUMENTATION

This page is still under construction

Revision control serves two purposes for research: 1) It allows you to easily work on and update code between machines, provides a minimal backup of your codebase, and allows you to work collaboratively with others. 2) It also allows you to publish your research code, further helping your career and the usage of your software.

At Georgia Tech, we use Git as our primary revision control system, and students have access to a free Github repo that is maintained and (somewhat) backed up by OIT and is located at https://github.gatech.edu/. This site provides students with unlimited public and private repos, and more information on using it can be found here.

Getting Started with Git

Github has a really good list of resources for learning how to use Git here.

Of these, I'd suggest starting with Github's flow guide and the Hello world example.

Alex Merritt (GT CS) recommends gitready.com as a good resource where tips and pointers are categorized according to their complexity. For instance, reverting files is considered a basic topic while using rebase to squash together commits is considered "advanced".

Michael Isaev (GT CSE) has also recommended Atlassian's Git intro which provides a better text overview as well as some nice explanations of some of the more esoteric git commands.

More interactive Tutorials

If you'd like to learn via an interactive, online tutorial (before installing git locally), there are two good options for a basic and more intermediate tutorial:

  • Try Git: Provides a 15 minute online tutorial including all the basics including adding, commiting, pushing files and handling history and merges.

  • Understanding Git branching: This comprehensive tutorial goes through git branching in great detail.

More Advanced Git Resources

A researcher at Oak Ridge National Lab, Graham Lopez, has compiled a nice site that goes into more details based on his experiences with a large codebase, QMCPack.

GUI Client Options

While commandline seems to be the best option, especially for development on remote servers, there are several different GUI tools for different OSes listed here. Of these, GitHub Desktop (Mac/Win) and SourceTree (Mac/Win) are some of the most well known and are also free.

Other Resources

Git Book

Git Immersion: A tutorial that requires you download a git repo but that provides a detailed walkthrough of basic git commands.