Prefer a video tutorial? See ours here:

Version Control in MRG

Proper Version Control

How engineers tend to do version control

robot_script_v1.py
robot_script_v2.py
robot_script_v1_2.py
robot_script_final.py
robot_it_works_this_time.py

Uploading scripts over and over can work well for a team of just one or two people. Even then, sometimes things can get a little confusing…

How engineers should do version control

For large scale projects, it is much more important to use version control software. Version control software allows developers to keep track of changes, develop concurrently, and combine multiple files with different changes into a singular file.

What is Git?

Git is a version control system. A version control system is a way of keeping track of changes in code (or any set of text files). It’s critical to use a version control system when multiple people are working on developing software concurrently. Subversion is also another software used for version control.

GitHub is just a host for source code. You could think of it like OneDrive or Google Drive, but instead of documents, it primarily holds source code. GitHub is just one service which is run by Microsoft. GitLab and Bitbucket are hosts which serve a similar function.

<aside> ❓ Georgia Tech has its own GitHub instances (github.gatech.edu and github-research.gatech.edu) with student logins. These are not accessible to the public and comply with data regulations. Our organization keeps the majority of code on the public GitHub instance (github.com) under our organization (github.com/gt-marine-robotics-group).

</aside>

Learn Git Branching is a handy resource for learning about the different functions git provides with helpful visualizations.

Git is available on every major operating system.

Git Setup

The commands you’ll use over and over again

Status

git status
=== OUTPUTS ===
On branch new_feature
Your branch is up to date with 'origin/new_feature'.

nothing to commit, working tree clean

The git status command gives information on the current status of your local repository. It will tell you if you are up to date with the remote repository and what changes you have made.